当前位置: 首页 > news >正文

详解模版类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对象。

// 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;
}

运行结果:

http://www.lryc.cn/news/487537.html

相关文章:

  • AI驱动的桌面笔记应用Reor
  • 搜维尔科技:使用sensglove触觉反馈手套进行虚拟拆装操作
  • 深入理解电子邮件安全:SPF、DKIM 和 DMARC 完全指南
  • 【有啥问啥】复习一下什么是NMS(非极大值抑制)?
  • Java-异步方法@Async+自定义分布式锁注解Redission
  • 基本定时器---内/外部时钟中断
  • 实现了两种不同的图像处理和物体检测方法
  • 如何在MindMaster思维导图中制作PPT课件?
  • ORIN NX 16G安装中文输入法
  • 【金融风控项目-07】:业务规则挖掘案例
  • 退款成功订阅消息点击后提示订单不存在
  • 实验一 顺序结构程序设计
  • Elasticsearch搜索流程及原理详解
  • 芯片之殇——“零日漏洞”(文后附高通64款存在漏洞的芯片型号)
  • 【gitlab】gitlabrunner部署
  • Flink监控checkpoint
  • Ribbon 入门实战指南
  • uniapp: 微信小程序包体积超过2M的优化方法(主包从2.7M优化到1.5M以内)
  • 【百日算法计划】:每日一题,见证成长(026)
  • 【大模型】prompt实践总结
  • 在Qt(以及C++)中, 和 * 是两个至关重要的符号--【雨露均沾】
  • 本地部署Apache Answer搭建高效的知识型社区并一键发布到公网流程
  • Ubuntu常见命令
  • 网络安全领域的最新动态和漏洞信息
  • 华为开源自研AI框架昇思MindSpore应用案例:人体关键点检测模型Lite-HRNet
  • 每日OJ题_牛客_天使果冻_递推_C++_Java
  • 独立站干货:WordPress主机推荐
  • 支持多种快充协议和支持多种功能的诱骗取电协议芯片
  • Android中常见内存泄漏的场景和解决方案
  • MyBatis Plus中的@TableId注解