STL–第二章 pair[x,y]
可以理解为(x,y)数学中的坐标表示
小技巧:使用typedef定义
typedef pair<int,int> PII
头文件
#include <utility>
初始化
格式:pair<first的数据类型,second的数据类型>元素名;
pair中只有两个元素,first和second
//两种方式初始化
pair<string,int> p("hello",1);
pair<string,int> p = make_pair("hello",1);
first()和second()
pair<string,int> p("hello",1);
p.first;//第一个元素=hello
p.second;//第二个元素=1
嵌套
vector<pair<int,int>>//与vector结合
//套娃操作,用pair存储3个元素
pair<int,pair<int,int>> p(1,{
2,3});
当pair结合sort()函数使用时,pair默认对first升序,当first相同时对second升序(从小到大)。也可以通过修改cmp函数达到对second进行排序。
#define _f(i,a,b) for(auto i=a;i<b;i++)
#include <iostream>
#include <cstdio>
#include <vector>
#include <utility>
#include <algorithm>
using namespace std;
//自定义排序规则:按second升序排序
bool cmp(pair<int, int> a, pair<int, int> b) {
return a.second < b.second;
}
int main()
{
pair<int, int> p[100];
p[0] = make_pair(1, 6);
p[1] = make_pair(2, 3);
p[2] = make_pair(2, 5);
sort(p, p + 3, cmp);
_f(i, 0, 3) {
cout << p[i].first << "," << p[i].second << endl;
}
}
输出:
2,3
2,5
1,6