Pair类型概述
pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同,基本的定义如下:
pair<int, string> a;
表示a中有两个类型,第一个元素是int型的,第二个元素是string类型的,如果创建pair的时候没有对其进行初始化,则调用默认构造函数对其初始化。
pair<string, string> a("James", "Joy");
也可以像上面一样在定义的时候直接对其初始化。
由于pair类型的使用比较繁琐,因为如果要定义多个形同的pair类型的时候,可以时候typedef简化声明:
typedef pair<string, string> author;
author pro("May", "Lily");
author joye("James", "Joyce");
Pair对象的操作
-
对于pair类,由于它只有两个元素,分别名为first和second,因此直接使用普通的点操作符即可访问其成员
pair<string, string> a("Lily", "Poly");
string name;
name = pair.second;
-
生成新的pair对象
可以使用make_pair对已存在的两个数据构造一个新的pair类型:
int a = 8;
string m = "James";
pair<int, string> newone;
newone = make_pair(a, m);
1#include <iostream>
2#include <utility>
3#include <string>
4usingnamespace std;
5
6int main () {
7pair <string,double> product1 ("tomatoes",3.25);
8pair <string,double> product2;
9pair <string,double> product3;
10
11product2.first ="lightbulbs"; // type of first is string
12product2.second =0.99; // type of second is double
13
14product3 = make_pair ("shoes",20.0);
15
16cout <<"The price of "<< product1.first <<" is $"<< product1.second <<"\n";
17cout <<"The price of "<< product2.first <<" is $"<< product2.second <<"\n";
18cout <<"The price of "<< product3.first <<" is $"<< product3.second <<"\n";
19return0;
20}
其运行结果如下:
1The price of tomatoes is $3.25
2The price of lightbulbs is $0.99
3The price of shoes is $20
01 pair <wbr>vs <wbr>make_pair</wbr></wbr>
02 make_pair constructs a pair object.
03 template
04 pair make_pair(T1 x, T2 y)
05 {
06 <wbr><wbr>return pair(x, y);</wbr></wbr>
07 }
08
09 eg: <wbr>std::pair("sn001", 12.5);</wbr>
10 <wbr><wbr><wbr><wbr>std::make_pair("sn001", 12.5);</wbr></wbr></wbr></wbr>
11 <wbr><wbr><wbr><wbr>两者效果一样。</wbr></wbr></wbr></wbr>
12 倘若:std::pair("sn002", 12.6); <wbr>// 12.6's datatype is float</wbr>
13 <wbr><wbr><wbr><wbr>std::make_pair("sn002",12.6); <wbr>// 12.6's datatype is double</wbr></wbr></wbr></wbr></wbr>
14 使用:
15 <wbr><wbr><wbr><wbr>std::pair m_pairA;</wbr></wbr></wbr></wbr>
16 <wbr><wbr><wbr><wbr>m_pairA = std::make_pair("sn001", 12.5);</wbr></wbr></wbr></wbr>
17 <wbr><wbr><wbr><wbr>std::cout<<m_pairA.first<<" <wbr>"<<m_pairA.second<<std::endl;</wbr></wbr></wbr></wbr></wbr>
18 结合map的简单使用:
19 <wbr><wbr><wbr><wbr>std::pair m_pairA;</wbr></wbr></wbr></wbr>
20 <wbr><wbr><wbr><wbr>m_pairA = std::make_pair("sn001", 12.5);</wbr></wbr></wbr></wbr>
21 <wbr><wbr><wbr><wbr>//std::cout<<m_pairA.first<<" <wbr>"<<m_pairA.second<<std::endl;</wbr></wbr></wbr></wbr></wbr>
22 <wbr><wbr><wbr><wbr>std::map m_mapA;</wbr></wbr></wbr></wbr>
23 <wbr><wbr><wbr><wbr>m_mapA.insert(m_pairA);</wbr></wbr></wbr></wbr>
24 <wbr><wbr><wbr><wbr>std::map::iterator iter = m_mapA.begin();</wbr></wbr></wbr></wbr>
25 <wbr><wbr><wbr><wbr>std::cout<<iter->first<<" <wbr>"<<iter->second<<std::endl;</wbr></wbr></wbr></wbr></wbr>
小结:
make_pair创建的是一个pair对象。使用都很方便,针对成对出现的数据,如书的ISBN对应一个书名。
pair是单个数据对的操作,pair是一struct类型,有两个成员变量,通过first,second来访问,用的是“.”访问。
map是一个关联容器,里面存放的是键值对,容器中每一元素都是pair类型,通过map的insert()方法来插入元素(pair类型)。
相关推荐
C++类模板与STL编程,免费上传,好东西大家用
pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。 pair的实现是一个结构体,主要...
vector list map pair stl 标准模板库 c++ 程序示例
PAT基础知识——STL之pair&tuple定义用法初始化:使用大括号直接对first,second赋值查询用途替换二元结构体,初始化、获取元素值更方便用于m
C++ pair的用法实例详解 1 pair的应用 pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存。另一个应用是,当一个函数需要返回2个数据的时候,可以选择...
大家都知道map容器是C++ STL中的重要一员,平时会遇到删除map容器中value为指定元素的问题,例如删除所有字符串为”123″或者能整除3的元素。 一、map容器下的方法说明 由于map容器下的方法较多,这里只列举代码中用...
Utilities <br/>4.1 Pairs <br/>4.1.1 Convenience Function <br/>4.1.2 Examples of Pair Usage <br/>4.2 Class <br/>4.3 Numeric Limits <br/>4.4 Auxiliary Functions <br/>4.5 ...
LightSTLLightSTL是STL的一个子集和一个超集,是我在分析STL源码后结合自己的理解进行编写的主要目的在于提高数据结构与算法和C++编程LightSTL开发进度底层配置和主要容器iterator_traits(100%)type_traits(100%)...
1. Alloc.h 分配内存,使用二...7. Utility.h 算法中使用,实现pair 8. ReserveseIterator.h 反向迭代器 9. Algorithm.h 经典算法 10. UninitializedFunctions.h 未定义的初始变量的初始化
重新绑定 Rebind 是一个用于操作类型容器的 C++ 库,类似于boost::mpl 。 它需要 C++11 支持。 与传统的元编程库不同,它旨在与类型容器无关。 它没有等效的boost::mpl::vector ,而是...using Pair = std::pair; using
38.3 pair类 38.4 本地化 38.5 其他有趣的类 第五部分 C++应用程序范例 第39章 集成新的类:自定义字符串类 39.1 StrType类 39.2 构造函数和析构函数 39.3 字符串I/O 39.4 赋值函数 39.5 连接 39.6 子字符串减法 ...
SerializeQueue支持以下数据类型, 布尔字符,未签名的字符uint64_t int,无符号int 浮点双std :: string STL容器(可以容纳任何受支持的类型,包括其他STL容器) std :: pair <T1> std :: tuple (限于基本类型) ...
c_plus_plus_stdlib(C++标准库) 通用工具 pair和tuple pair tuple Smart Pointer(智能指针) shared_ptr weak_ptr unique_ptr auto_ptr Type Trait和Type Utility Type Trait Reference Warpper(外覆器) Function ...
42 ft_containers项目关于一些C ++ 98的STL容器 可在Arch Linux和macOS上使用。 疯狂测试无法在Windows上运行,因为没有clock_gettime 对于Windows 10 / Visual Studio 2019端口,请检查vsport分支 怎么做的: ...
高效的 C++ JSON 解析/生成器,提供 SAX 及 DOM 风格 API。简介。RapidJSON 是一个 C++ 的 JSON 解析器及生成器。它的灵感来自 RapidXml。RapidJSON 小而全。...它也支持代理对(surrogate pair)及 "\u0000"(空
本教程共分为5个部分,第一部分是C语言提高部分,第二部分为C++基础部分,第三部分为C++进阶部分,第四部分为C、C++及数据结构基础部分,第五部分为C_C++与设计模式基础,内容非常详细. 第一部分 C语言提高部分目录...
72.zip Extension to the STL find_if and for_each 扩充STL库(5KB)<END><br>73,73.zip Change from child window to popup window (and back) 将一个子窗口改成弹出式窗口(5KB)<END><br>74,74.zip ...