[语法备忘]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>对象

操作

访问成员

使用firstsecond可以直接访问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之间的比较遵循字典序,首先比较firstfirst相同则按照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;
posted @ 2022-03-30 17:06  Akiho  阅读(59)  评论(0)    收藏  举报