详解模版类pair

目录

一、pair简介

[二、 pair的创建](#二、 pair的创建)

三、pair的赋值

四、pair的排序

(1)用sort默认排序

(2)用sort中的自定义排序进行排序

五、pair的交换操作


一、pair简介

  1. pair是一个模版类,可以存储两个值的键值对.first以及.second。
  2. 常见用途:1️⃣用于需要返回两个值的函数; 2️⃣用于容器的元素,如std::map,std::set;
  3. pair包含在头文件#include <utility>

二、 pair的创建

(1)默认构造函数:空的pair对象。

cpp 复制代码
// 1. 默认构造函数,即创建空的 pair 对象
pair <DataType1, DataType2> pair1;

三、pair的赋值

(1)直接在构造的时候进行赋值有初始值的pair对象。

cpp 复制代码
// 2. 直接使用 2 个元素初始化成 pair 对象
pair <DataType1, DataType2> pair2(DataType1_Value, DataType2_Value);

(2)拷贝已有对象赋值。

cpp 复制代码
// 3. 拷贝构造函数:即借助另一个 pair 对象,创建新的 pair 对象
pair <DataType1, DataType2> pair3(pair2);

(3)为pair单个值赋上对应值。

cpp 复制代码
pair<string,int> pair1;
pair1.first = "baidu";
pair1.second = 34;

四、pair的排序

(1)用sort默认排序

现将第一个元素.first进行比较,如果相等,再比较.second

cpp 复制代码
#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中的自定义排序进行排序

这里举例由大到小的排序顺序:

cpp 复制代码
#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的交换操作

cpp 复制代码
#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;
}

运行结果:

相关推荐
YOULANSHENGMENG8 分钟前
linux 下python 调用c++的动态库的方法
c++·python
CodeWithMe23 分钟前
【C++】STL之deque
开发语言·c++
炯哈哈1 小时前
【上位机——MFC】运行时类信息机制
开发语言·c++·mfc·上位机
rigidwill6662 小时前
LeetCode hot 100—最长有效括号
数据结构·c++·算法·leetcode·职场和发展
阳光_你好3 小时前
C++/Qt中QActionGroup类用法
c++·qt
菜鸟射手3 小时前
QT creater和vs2017文件路径问题
linux·c++·windows·qt
wuqingshun3141593 小时前
蓝桥杯17. 机器人塔
c++·算法·职场和发展·蓝桥杯·深度优先
simple_whu3 小时前
解决编译pcl时报错‘chrono_literals‘: is not a member of ‘std‘
c++·windows·visual studio
吴_知遇5 小时前
【华为OD机试真题】428、连续字母长度 | 机试真题+思路参考+代码解析(E卷)(C++)
开发语言·c++·华为od
LaoWaiHang6 小时前
MFC案例:使用键盘按键放大、缩小窗口图像的实验
c++·mfc