提供可以在一个存储单元内,可以存放两个相异的数据类型的路径。
头文件
#include
构造
- pair <类型1, 类型2> 标识符;
- pair <类型1, 类型2> 标识符 { 初始值1, 初始值2 }; //将两个初始值分别赋给两个位置
- pair <类型1, 类型2> p;
p = make_pair(初始值1, 初始值2);
实例
#include<bits/stdc++.h>
using namespace std;
template <class T1, class T2>
void printpair(const pair<T1, T2> & p) {
cout << "p.first: " << p.first << " p.second: " << p.second << endl;
}
int main() {
// 1、默认构造函数
pair <int, string> p1;
p1.first = 1;
p1.second = "haha";
cout << "1: "; printpair(p1);
// 2、带初始值的构造函数
pair <int, int> p2 {2, 2};
cout << "2: "; printpair(p2);
// 3、利用已有的pair来构造新的pair
pair <int, int> p3 { p2 };
cout << "3: "; printpair(p3);
// 4、利用pair对另一个pair赋值
pair <int, string> p4 {4, "hehe"};
p1 = p4;
cout << "4: "; printpair(p1);
// 5、在pair里面存放vector
pair <int, vector<int>> p5 {1, {1, 5, 7}};
cout << "5: p.first: " << p5.first << " p.second: ";
for(auto it = p5.second.begin(); it!=p5.second.end(); it++) {
cout << *it << " ";
}
cout << endl;
// 6、在vector里存放pair
vector <pair<int, int>> vec;
vec.push_back({1, 3});
cout << "6: vec[0].first: " << vec[0].second << " vec[0].first: "
<< vec[0].second << endl;
return 0;
}
运行结果
排序
使用sort排序对pair类型的数组进行排序时,其内部已经设置了排序规则
即优先按照first进行排序 再按照second排序
#include<bits/stdc++.h>
using namespace std;
struct NODE {
int x, y;
//重载
bool operator < (const NODE& a) const {
// 第一个变量不同时 按照第一个变量进行排序
if (x!=a.x) {
return x < a.x;
}
// 第一个变量相同时 按照第二个变量进行排序
return y < a.y;
}
};
int main() {
// pair数组
pair <int, int> p[2];
p[0] = {1, 2};
p[1] = {0, 4};
cout << "排序前\n";
cout << "p[0].first: " << p[0].first
<< " p[0].second: " << p[0].second << endl;
cout << "p[1].first: " << p[1].first
<< " p[1].second: " << p[1].second << endl;
// sort排序 --> 内置了排序规则
// 即优先按照first进行排序 再按照second排序
sort(p, p+2);
cout << "排序后\n";
cout << "p[0].first: " << p[0].first
<< " p[0].second: " << p[0].second << endl;
cout << "p[1].first: " << p[1].first
<< " p[1].second: " << p[1].second << endl;
return 0;
}