[语法备忘]C++中的pair
pair in c++
pair是一个结构模板,将两个数据打包组合成一个数据。pair是一个struct,其成员默认是public的,可以直接使用.first和.second访问。
初始化
//基本用法:两个初始化一个空的pair对象,两个值分别为T1和T2类型(可以不同),成员采用默认初始化
pair<T1, T2> p;
//对成员变量进行初始化
pair<T1, T2> p(v1, v2);
//返回一个pair对象,类型自动确定为v1v2的类型
p = make_pair(v1, v2);
//eg.
pair<string, int> word_count; //默认初始化,两个值分别为string类型和int类型
pair<string, string> p("China Unicom", "10010"); //使用提供的值初始化
pair<int, string> name(24, "Tadokoro");
pair<int, string> name2(name); //使用另一个对象进行复制初始化
p = make_pair(24, "Tadokoro"); //使用make_pair返回一个pair<int, string>对象
操作
访问成员
使用first和second可以直接访问pair的成员,并且可以进行赋值。
pair<int, string> name(24, "Tadokoro");
cout << name.first << " " << name.second << endl;
//24 Tadokoro
name.first = 33
name.second = "ywwuyi"
cout << name.first << " " << name.second << endl;
比较与排序
两个pair之间的比较遵循字典序,首先比较first,first相同则按照second比较。
p1 < p2
还可以直接进行sort:
#include <algorithm>
#include <vector>
typedef pair<int, int> PII;
vector<PII> v;
for (int i=0; i!=n; ++i) v.push_back({i, i}); //一个pair需要使用大括号扩起来
sort(v, v+n);
for (int i=0; i!=n; ++i) cout << v[i].first << " " << v[i].second << endl;

浙公网安备 33010602011771号