C++/STL8. pair
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++/STL8. pair相关的知识,希望对你有一定的参考价值。
- pair是STL中有用的一个“小玩意”,它将两个任意数据类型的变量绑定在一起。可以把pair看作一个内部有两个元素的结构体,也可以把它看做map映射中的一项
- pair支持任意基本数据类型和STL容器
- pair定义于
utility.h
,命名空间std
-
map.h
中包含了utility.h
,所以如果包只含map.h
也可以用pair
一、构造函数
作用 | 代码 | 说明 |
定义一个pair | pair<typename1,typename2> p; | typename可以是任意基本数据类型或STL容器 |
初始化一个pair | make_pair(value1,value2); | 可用于函数实参,或者用来初始化已定义的pair |
定义一个pair,同时初始化 | pair<typename1,typename2> p(value1,value2); | - |
定义并初始化临时pair | pair<typename1,typename2> (value1,value2); | 常用于函数实参 |
二、访问pair
- 访问pair中前一个元素
pair.first
- 访问pair中前一个元素
pair.second
#include <iostream>
#include <utility>
#include <vector>
using namespace std;
void printPair(const pair<string,int> &p)
cout<<p.first<<" "<<p.second<<endl;
int main()
vector<int> v;
v.push_back(1);
v.push_back(2);
//pair<typename1,typename2> p; 方法
pair<int,vector<int> > p;
//make_pair()方法
p = make_pair(1,v);
cout<<p.first<<" "<<p.second[0]<<endl; //---------------打印1 1
//pair<typename1,typename2> p(value1,value2); 方法
pair<string,int> p1("A",1);
printPair(p1); //---------------打印A 1
//pair<typename1,typename2> (value1,value2); 方法,构造临时pair
printPair(pair<string,int> ("B",2)); //---------------打印B 2
//make_pair方法构造临时pair
printPair(make_pair("C",3)); //---------------打印C 3
return 0;
三、比较pair
- 两个pair之间可以用
== / != / < / <= / > / >=
比较大小 - 比较规则:先比较first,如果相等再比较second
#include <iostream>
#include <utility>
#include <vector>
using namespace std;
int main()
pair<int,int> p1(5,10);
pair<int,int> p2(5,15);
pair<int,int> p3(10,5);
if(p1<p3)
cout<<"p1<p3"<<endl; //打印
if(p1<=p3)
cout<<"p1<=p3"<<endl; //打印
if(p1<p2)
cout<<"p1<p2"<<endl; //打印
return 0;
四、常见用途
- 用来代替二元结构体,节省编码时间
- 作为map的键值来进行插入,如下:
#include <iostream>
#include <map>
//#include <utility> //有map就不用这个了
#include <string>
using namespace std;
int main()
map<string,int> mp;
mp.insert(make_pair("A",1));
mp.insert(pair<string,int>("B",2));
for(map<string,int>::iterator it=mp.begin();it!=mp.end();it++)
cout<<it->first<<" "<<it->second<<endl;
return 0;
/*
A 1
B 2
*/
以上是关于C++/STL8. pair的主要内容,如果未能解决你的问题,请参考以下文章