一、pair简介
- pair适用于当想要将两个元素绑定在一起作为一个合成元素、又不想要因此定义结构体时。
- pair可看作一个内部有两个元素的结构体,且这两个元素的类型是可以指定的。
struct pair{
typeName1 first;
typeName2 second;
};
- 常见用途
- 用来代替二元结构体及其构造函数,节省编码时间
- 作为map的键值对来进行插入
二、pair的定义
#include<utility>
using namespace std;
- map的内部实现中涉及pair,添加map头文件时会包含utility头文件
- 定义
- pair有两个参数,分别对应first和second的数据类型,它们可以是任意基本数据类型或容器
- 想在pair定义时进行初始化,只需跟上一个小括号,里面包含想初始化的元素。
- 临时构建pair有两种方法
- 将类型定义写在前面,后面用小括号包含两个元素
- 使用自带的make_pair函数
pair<typeName1, typeName2> name;
pair<string, int> p;
pair<string, int>("haha", 5);
make_pair("haha", 5);
三、pair中元素的访问
- pair中只有两个元素,分别是first和second,按正常结构体方式访问
pair<string, int> p;
p.first = "haha";
p.second = 5;
四、pair常用函数
- 两个pair类型的数据可以直接使用==、!=、<=等比较大小,比较规则是先以first的大小作为标准,只有当first相等时才会判别second大小
- pair作为map键值对插入示例
#include<iostream>
#include<map>
using namespace std;
int main(){
map<string, int> mp;
mp.insert(make_pair("haha", 6));
mp.insert(pair<string, int>("haha", 9));
for(map<string, int>::iterator it = mp.begin(); it != mp.end; it++){
cout<<it->first<<" "<<it->second<<endl;
}
return 0;
}