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; 创建一个空对象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;
}
posted @ 2022-10-14 11:33  程易。  阅读(512)  评论(0)    收藏  举报