pair定义
pair:将两个元素绑在一起作为一个合成元素。可以看为一个两元素的结构体
struct pair{
typeName1 first;
typeName2 second;
};
头文件:# include <utility> 或 # include <map>
pair 构造
定义构造:
pair<int, double> p1; //使用默认构造函数
pair<int, double> p2(1, 2.4); //用给定值初始化
pair<int, double> p3(p2); //拷贝构造函数
pair<int, double> p4 = p2; // =赋值
p5 = make_pair(1, 2.4) //使用make_pair函数构造,值的类型会自动指定。
访问两个元素:
pair<int, double> p1; //使用默认构造函数
p1.first = 1;
p1.second = 2.5;
pair 元素访问
两个元素:first和second
# include <stdio.h>
# include <utility>
using namespace std;
int main(){
pair<string, int> p;
p.first = "hello";
cout<<p.first<<" "<<p.second<<end;
return 0;
}
pair 常用函数
比较操作==,!=,<,<,<=,>,>=
比较的时候,先比较first,first相等才比较second。
#include<stdio.h>
#include<utility>
using namespace std;
int main()
{
pair<int,int> p1(1,2);
pair<int,int> p2(2,3);
pair<int,int> p3(1,4);
if(p1<p2)printf("p1<p2\n");
if(p1<=p3)printf("p1<=p3\n");
if(p2<p3)printf("p2<p3\n");
return 0;
}
代替二元结构体
作为map的键值来进行插入操作。
#include<stdio.h>
#include<map>
using namespace std;
int main()
{
map<string,int> mp;
mp.insert(pair<string,int>("help",1));
mp.insert(make_pair("hello",2));
for(map<string,int>::iterator it=mp.begin();it!=mp.end();it++)
{
cout<<it->first<<" "<<it->second<<endl;
}
return 0;
}