详解模版类pair
目录
一、pair简介
二、 pair的创建
三、pair的赋值
四、pair的排序
(1)用sort默认排序
(2)用sort中的自定义排序进行排序
五、pair的交换操作
一、pair简介
- pair是一个模版类,可以存储两个值的键值对.first以及.second。
- 常见用途:1️⃣用于需要返回两个值的函数; 2️⃣用于容器的元素,如std::map,std::set;
- pair包含在头文件#include <utility>
二、 pair的创建
(1)默认构造函数:空的pair对象。
// 1. 默认构造函数,即创建空的 pair 对象
pair <DataType1, DataType2> pair1;
三、pair的赋值
(1)直接在构造的时候进行赋值有初始值的pair对象。
// 2. 直接使用 2 个元素初始化成 pair 对象
pair <DataType1, DataType2> pair2(DataType1_Value, DataType2_Value);
(2)拷贝已有对象赋值。
// 3. 拷贝构造函数:即借助另一个 pair 对象,创建新的 pair 对象
pair <DataType1, DataType2> pair3(pair2);
(3)为pair单个值赋上对应值。
pair<string,int> pair1;
pair1.first = "baidu";
pair1.second = 34;
四、pair的排序
(1)用sort默认排序
现将第一个元素.first进行比较,如果相等,再比较.second
#include <iostream>
#include <algorithm>
#include <utility>
using namespace std;
int main(void){
vector<pair<int,int>> p;
p.push_back({7,8});
p.push_back({5,6});
p.push_back({3,4});
p.push_back({1,2});
sort(p.begin(),p.end());
for(int i=0;i<p.size();i++){
cout<<p[i].first<<" "<<p[i].second<<endl;
}
}
(2)用sort中的自定义排序进行排序
这里举例由大到小的排序顺序:
#include <iostream>
#include <algorithm>
#include <utility>
using namespace std;
bool cmp(pair<int,int> a,pair<int,int> b){
if(a.first!=b.first){
return a.first>b.first;
}
else{
return a.second>b.second;
}
}
int main(void){
vector<pair<int,int>> p;
p.push_back({1,2});
p.push_back({3,4});
p.push_back({5,6});
p.push_back({7,8});
sort(p.begin(),p.end(),cmp);
for(int i=0;i<p.size();i++){
cout<<p[i].first<<" "<<p[i].second<<endl;
}
}
运行结果:
五、pair的交换操作
#include <iostream>
#include <algorithm>
#include <utility>
using namespace std;
int main(void){
pair<int,int> a({1,2});
pair<int,int> b({3,4});
cout<<a.first<<" "<<a.second<<endl;
cout<<b.first<<" "<<b.second<<endl;
a.swap(b);
cout<<a.first<<" "<<a.second<<endl;
cout<<b.first<<" "<<b.second<<endl;
}
运行结果: