详解模版类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;
}

运行结果:

相关推荐
挣扎与觉醒中的技术人2 分钟前
网络安全入门持续学习与进阶路径(一)
网络·c++·学习·程序人生·安全·web安全
OTWOL1 小时前
【C++编程入门基础(一)】
c++·算法
宇寒风暖1 小时前
侯捷 C++ 课程学习笔记:内存管理与工具应用
c++·笔记·学习
Smile丶凉轩2 小时前
数据库面试知识点总结
数据库·c++·mysql
Want5952 小时前
C/C++跳动的爱心
c语言·开发语言·c++
laimaxgg2 小时前
Qt常用控件之数字显示控件QLCDNumber
开发语言·c++·qt·qt5·qt6.3
蓝天扶光2 小时前
c++贪心系列
开发语言·c++
Alidme3 小时前
cs106x-lecture14(Autumn 2017)-SPL实现
c++·学习·算法·codestepbystep·cs106x
小王努力学编程3 小时前
【算法与数据结构】单调队列
数据结构·c++·学习·算法·leetcode
Zfox_4 小时前
【QT】信号与槽 & 窗口坐标
开发语言·c++·qt·qt5