pair
pair的应用
pair是将\(2\)个数据组合成一组数据,当需要这样的需求时就可以使用\(pair\),如\(stl\)中的\(map\)就是将\(key\)和\(value\)放在一起来保存。
另一个应用是,当一个函数需要返回 \(2\) 个数据的时候,可以选择pair。
pair的实现是一个结构体,主要的两个成员变量是first,second。因为是使用struct不是class,所以可以直接使用pair的成员变量。
功能:
- pair将一对值(T1和T2)组合成一个值。
- 这一对值可以具有不同的数据类型(T1和T2)。
- 两个值可以分别用pair的两个公有函数first和second访问。
pair的创建和初始化
\(pair\) 包含两个数值,与容器一样,pair也是一种模板类型。
在创建 \(pair\) 对象时,必须提供两个类型名,两个对应的类型名的类型不必相同
| 使用格式 | 说明 |
|---|---|
| pair<string, string> anon; | 创建一个空对象anon,两个元素类型都是string |
| pair<string, int> word_count; | 创建一个空对象 word_count, 两个元素类型分别是string和int类型 |
| pair<string, vector |
创建一个空对象line,两个元素类型分别是string和vector类型 |
当然也可以在定义时进行成员初始化:
| 使用格式 | 说明 |
|---|---|
| pair<string, string> author("James","Joy"); | 创建一个author对象,两个元素类型分别为string类型,并默认初始值为James和Joy。 |
| pair<string, int> name_age("Tom", 18); | 创建一个对象 name_age, 两个元素类型分别是string和int类型 |
| pair<string, int> name_age2(name_age); | 拷贝构造初始化 |
pair类型的使用相当的繁琐,如果定义多个相同的pair类型对象,可以使用typedef简化声明:
typedef pair<long long,long long> PII;
生成新的 \(pair\) 对象
利用 \(make\_pair\) 创建新的 \(pair\) 对象。
pair<int, double> p1;
p1 = make_pair(1, 1.2);
cout << p1.first << " " << p1.second << endl;
关于pair的默认排序。
默认以 key 排序,如果key一样,则以 value 排序。
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int>PII;
PII arr[1000];
int main(){
int n;
cin>>n;
for(int i = 1;i<=n;i++){
int a,b;
cin>>a>>b;
arr[i] = make_pair(a,b);
}
sort(arr+1,arr+n+1);
for(int i = 1;i<=n;i++){
cout<<arr[i].first<<' '<<arr[i].second<<endl;
}
return 0;
}

浙公网安备 33010602011771号