STL pair类型的介绍

本文深入解析C++标准库中的pair类型,介绍其定义、构造方式及应用场景,特别强调了pair在处理map数据结构时的优势。

pair标准库类型它定义在头文件utility中。

一个pair保存两个数据成员。类似容器,pair是一个用来生成特定类型的模板。当创建一个pair时,我们必须提供两个类型名,pair的数据成员将具有对应的类型。两个类型不要求一样:

pair<string,string>anon;//保存两个string
pair<string,size_t>word_count;//保存一个string和一个size_t
pair<string,vector<int>line>;//保存string和vector<int>

  pair的默认构造函数对数据成员进行值初始化。因此,anon是一个包含两个空string的pair。line保存一个空string和一个空vector。word_count中的size_t成员值为0,而string成员被初始化为空。

我们可以为每一个成员提供初始化器:

pair<string,string>author{"James","Joyce"};

这条语句创建了一个author的pair,两个成员被初始化为“James”和“Joyce”。

与其他标准类型不同,pair的数据成员是public。两个成员分别为first和second。我们用普通的成员访问符号来访问他们。

pair上的操作:

pair<T1,T2>p;//p是一个pair,两个类型分别为T1和T2的成员都进行了值初始化
pair<T1,T2>p(v1,v2);//p是一个成员类型为T1和T2的pair;first和second成员分别用v1和v2进行呢初始化
pair<T1,T2>p={v1,v2};//等价于p(v1,v2)
make_pair(v1,v2);//返回一个用v1和v2初始化的pair。pair的类型从v1和v2的类型推断出来。
p1==p2//当first和second成员分别相等时,两个pair相等。相等性判断利用元素的==运算符实现。

  

 使用场景:当我们要对map的values进行排序时可以先把map中的元素转化为pair在一个一个存入vector中,然后就可以进行排序了。为什么呢?因为pair‘的数据成员是public的,而map的数据成员是private的所以没法直接对map的数据成员进行操作,但是可以直接对pair的数据成员进行排序。

转载于:https://www.cnblogs.com/wuyepeng/p/10157177.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值