C++中pair的用法

一、概述

pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,如STL中的map就是将key和value放在一起来保存。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。 pair的实现是一种结构体,主要的两个成员变量是first, second 因为是使用struct不是class,所以可以直接使用pair的成员变量。

二、定义

pair<T1, T2> p1;           //创建一个空的pair对象(使用默认构造),它的两个元素分别是T1和T2类型,采用值初始化。
pair<T1, T2> p1(v1, v2);   //创建一个pair对象,它的两个元素分别是T1和T2类型,其中first成员初始化为v1,second成员初始化为v2。
make_pair(v1, v2);         // 以v1和v2的值创建一个新的pair对象,其元素类型分别是v1和v2的类型。
p1 < p2;                   // 两个pair对象间的小于运算,其定义遵循字典次序:如 p1.first < p2.first 或者 !(p2.first < p1.first) && (p1.second < p2.second) 则返回true。
p1 == p2;                 // 如果两个对象的first和second依次相等,则这两个对象相等;该运算使用元素的==操作符。
p1.first;                  // 返回对象p1中名为first的公有数据成员
p1.second;                 // 返回对象p1中名为second的公有数据成员

三、pair的创建和初始化

pair包含两个数值,与容器一样,pair也是一种STL模板类型。但是又与之前介绍的容器不同;在创建pair对象时,必须提供两个类型名,两个对应的类型名的类型可自由定义。

pair<string, string> ob;          // 创建一个空对象ob,两个元素类型都是string
pair<string, int> a;           // 创建一个空对象 a, 两个元素类型分别是string和int类型
pair<string, vector<int> > b;    // 创建一个空对象b,两个元素类型分别是string和vector类型

四、pair的排序

加入头文件
#include<algorithm>

1. 默认的sort()函数

pair<int,int>Item[n];    //定义pair对象数组Item[n]
sort(Item, Item+n);   //默认对Item的first的值进行排序

2. 自定义的sort()函数

bool cmp(pair<int, int>a, pair<int, int>b)
{return a.first<b.first;            //根据fisrt的值升序排序
}    

bool cmp(pair<int, int>a, pair<int, int>b)
{return a.first>b.first;            //根据second的值升序排序
} 

调用sort()函数

sort(Item, Item+n, cmp);       // 按照自定义的顺序进行排序

五、自定义pair类型

typedef pair<int, int>P;

转载于:https://www.cnblogs.com/Sunrises/p/10363394.html

C++中pair的用法相关推荐

  1. C++11中pair的用法

    概述 pair可以将两个数据组合成一种数据类型. C++标准库中凡是必须返回两个值的函数都使用pair. pair有两个成员变量,分别是first和second,由于使用的struct而不是class ...

  2. STL 中map的用法详解

    STL 中map的用法详解 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可 ...

  3. Android中am命令用法详解

    Android中am命令用法 位于frameworks/base/cmds/pm am命令作用:管理Activity usage: am [start|broadcast|instrument|pro ...

  4. couple和double的区别_double pair couple用法区别,a couple of和double的区别

    导航:网站首页 > double pair couple用法区别,a couple of和double的区别 double pair couple用法区别,a couple of和double的 ...

  5. c语言pair的用法,C++ std::pair的用法

    1 pair的应用 pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存.另一个应用是,当一个函数需要返回2个数据的时候, ...

  6. c语言pair的用法,C++ pair的用法实例详解

    C++ pair的用法实例详解 1 pair的应用 pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存.另一个应用是,当 ...

  7. mysql中change用法,mysql 中alter的用法以及一些步骤

    mysql 中alter的用法以及一些方法 在用到alter的时间,查到了这个文章,就copy下来了,详细进入下面链接: MySQL之alter语句用法总结 1:删除列 ALTER TABLE [表名 ...

  8. mysql中正则表达式的用法_Mysql中正则表达式Regexp常见用法

    Mysql中Regexp常见用法 模糊匹配,包含特定字符串 # 查找content字段中包含"车友俱乐部"的记录 select * from club_content where ...

  9. 【C++】C/C++ 中 static 的用法全局变量与局部变量

    C/C++ 中 static 的用法全局变量与局部变量 目录 1. 什么是static? 1.1 static 的引入 1.2 静态数据的存储 2. 在 C/C++ 中static的作用 2.1 总的 ...

最新文章

  1. centos升级mysql到5.5
  2. 渗透测试辅助工具--在线版
  3. R如何与Tableau集成分步指南 - 适用于数据科学和商业智能专业人员
  4. nyoj A+B Problem IV
  5. 华为买买买!5000万美元收购一家安防技术公司 看中的是这个!
  6. xendesktop更新计算机,XenApp / XenDesktop 7.6 初体验二 配置计算机目录和交付组
  7. Xshell 5 Build 1339 (5.0.1339)
  8. Java物联网中间件_物联网中间件技术——Niagara介绍.pdf
  9. 基于ANSYS某商场旋转楼梯钢结构受力分析
  10. nmap 扫描主机端口(谨慎使用)
  11. python中csv文件是什么_Python中的csv文件
  12. [Android实例] Android有效解决加载大图片内存溢出问题及优化虚拟机内存
  13. Unity多人联机框架Mirro学习记录(一)
  14. 宇宙的本源—存在之道和变化之道
  15. 成为人生的赢家都有哪些书_那么,我们是否有代码挑战#1的赢家?
  16. 照片被删除了?内存卡照片恢复这么做
  17. 三国演义中最具个性的名言
  18. 2021年金属非金属矿井通风考试试卷及金属非金属矿井通风作业考试题库
  19. 2021高考杭二中成绩查询,浙江高中高考成绩排名,2021年浙江各高中高考成绩排行榜...
  20. 好东西(Android开发人员不得不收集的代码)

热门文章

  1. linux 鼠标驱动
  2. 网页导航栏的设计原则和注意事项
  3. 1-3NF,BCNF,最小依赖集,模式分解,判断是否为无损分解
  4. 前端培训机构,有靠谱的吗?
  5. 架设游戏mysql_《从零开始搭建游戏服务器》MySQL安装配置
  6. pcm5102a解码芯片音质评测_漫步者LolliPods无线蓝牙耳机音质超越价格
  7. python3 运行argparse XX.py: error: the following arguments are required: N An exception has occurred,
  8. 从安装Ubuntu双系统到配置深度学习环境
  9. python算法交易工程师_清华编程高手尹成带你基于算法实践python量化交易
  10. office2013安装出错,老是出现找不到officeMUI.msi或则officeMUI.xml等,是什么原因?