pair 是 一种模版类型。每一个pair 能够存储两个值。这两种值无限制,能够是tuple。vector ,string,struct等等。

首先来看一下pair的函数

初始化。复制等相关操作例如以下:

default (1)
  1. constexpr pair();
copy / move (2)
  1. template<class U, class V> pair (const pair<U,V>& pr);
  2. template<class U, class V> pair (pair<U,V>&& pr);
  3. pair (const pair& pr) = default;
  4. pair (pair&& pr) = default;
initialization (3)
  1. pair (const first_type& a, const second_type& b);
  2. template<class U, class V> pair (U&& a, V&& b);
piecewise (4)
  1. template <class... Args1, class... Args2>
  2. pair (piecewise_construct_t pwc, tuple<Args1...> first_args,
  3. tuple<Args2...> second_args);

  1. // pair TEMPLATE FUNCTIONS
  2. //交换函数
  3. template<class _Ty1,
  4. class _Ty2> inline
  5. void swap(pair<_Ty1, _Ty2>& _Left, pair<_Ty1, _Ty2>& _Right)
  6. { // swap _Left and _Right pairs
  7. _Left.swap(_Right);
  8. }
  9. //推断是否相等函数
  10. template<class _Ty1,
  11. class _Ty2> inline
  12. bool operator==(const pair<_Ty1, _Ty2>& _Left,
  13. const pair<_Ty1, _Ty2>& _Right)
  14. { // test for pair equality
  15. return (_Left.first == _Right.first && _Left.second == _Right.second);//两个元素都比較
  16. }
  17. //推断是否不等函数
  18. template<class _Ty1,
  19. class _Ty2> inline
  20. bool operator!=(const pair<_Ty1, _Ty2>& _Left,
  21. const pair<_Ty1, _Ty2>& _Right)
  22. { // test for pair inequality
  23. return (!(_Left == _Right));
  24. }
  25. //推断是否小于函数
  26. template<class _Ty1,
  27. class _Ty2> inline
  28. bool operator<(const pair<_Ty1, _Ty2>& _Left,
  29. const pair<_Ty1, _Ty2>& _Right)
  30. { // test if _Left < _Right for pairs
  31. return (_Left.first < _Right.first ||
  32. !(_Right.first < _Left.first) && _Left.second < _Right.second);
  33. }
  34. //推断是否大于函数
  35. template<class _Ty1,
  36. class _Ty2> inline
  37. bool operator>(const pair<_Ty1, _Ty2>& _Left,
  38. const pair<_Ty1, _Ty2>& _Right)
  39. { // test if _Left > _Right for pairs
  40. return (_Right < _Left);
  41. }
  42. //推断是否小于等于函数
  43. template<class _Ty1,
  44. class _Ty2> inline
  45. bool operator<=(const pair<_Ty1, _Ty2>& _Left,
  46. const pair<_Ty1, _Ty2>& _Right)
  47. { // test if _Left <= _Right for pairs
  48. return (!(_Right < _Left));
  49. }
  50. //推断是否大于等于函数
  51. template<class _Ty1,
  52. class _Ty2> inline
  53. bool operator>=(const pair<_Ty1, _Ty2>& _Left,
  54. const pair<_Ty1, _Ty2>& _Right)
  55. { // test if _Left >= _Right for pairs
  56. return (!(_Left < _Right));
  57. }

贴一段代码:

  1. //pair 定义
  2. pair<string,int>pair1;
  3.  
  4. //pair 定义以及赋值一
  5. pair<string,int>pair2("lily",4);
  6. pair<string,int>pair3(pair2);
  7.  
  8. //pair 赋值方式二
  9. pair1=make_pair(string("tom"),3);
  10.  
  11. //pair 赋值方式三
  12. pair1.first="jim";
  13. pair1.second=2;
  14.  
  15. //pair 赋值方式四
  16. get<0>(pair1)=string("jim");
  17. get<1>(pair1)=6;
  18.  
  19. //pair 赋值方式五
  20. swap(pair1,pair3);
  21.  
  22. //pair 输出方式一
  23. cout<<pair2.first<<endl;
  24. cout<<pair2.second<<endl;
  25.  
  26. //pair 输出方式二
  27. cout<<get<0>(pair1)<<endl;
  28. cout<<get<1>(pair1)<<endl;

C++编程-&gt;pair(对组)的更多相关文章

  1. pair 对组

    pair 对组 c++ 基础 2016-05-10 19:42 154人阅读 评论(0) 收藏 举报  分类: 头文件的函数精粹(12)  版权声明:本文为博主原创文章,未经博主允许不得转载. 与关联 ...

  2. Unix/Linux环境C编程入门教程(35) 编程管理系统中的组

     组管理相关函数介绍 相关函数 getgid,setgid,setregid 表头文件 #include<unistd.h> #include<sys/types.h> 定 ...

  3. linux网络编程之一-----多播(组播)编程

    什么是多播 组播(Multicast)是网络一种点对多(one to many)的通信方式,通过报文复制完成网络中一台server对应多台接收者的高效数据传 送.对其形象的比喻就是类似于广播电台和电视 ...

  4. STL之pair对组

    #include<iostream> #include<algorithm> #include<cstring> #include<cstdlib> u ...

  5. pair对组

    一.pair基本概念 对组(pair)将一对值组合成一个值,这一对值可以具有不同的数据类型,两个值可以分别用pair的两个公有函数first和second访问. 类模板:template <cl ...

  6. 结对编程-Core 第12组 [pb15061359+pb15061351]

    一.项目要求 1.输入题目数量,生成操作数为3~5个的四则运算题目 2.输入上限值控制生成的操作数的最大值以及结果的最大值 3.输入支持的操作符类型:加.减.乘.除.乘方.括号 4.输入支持的操作数类 ...

  7. 编程算法 - 连续子数组的最大和 代码(C)

    连续子数组的最大和 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入一个整型数组, 数组里有正数也有负数. 数组中一个或连续的多个整数组成一 ...

  8. Linux编程 16 文件权限(组管理 groupadd, groupmod,文件权限介绍)

    一.用户组 前面章节知道用户账户在控制单个用户安全性方面很好,但涉及到共享资源或把用户类型分组时,组概念就出来了. 组权限允许多个用户对系统中的对象(比如文件,目录,设备等)共享一组共用的权限. 在c ...

  9. 屏幕编程 F4的帮组用法

    PROCESS ON VALUE-REQUEST. * 设置帮助(工作中心)  FIELD wa_zppt026-arbpl MODULE mdl_arbpl_f4. *&---------- ...

随机推荐

  1. 0509 关于Ajax + 三级联动示例

    关于Ajax 1.干什么的? ajax负责抓取用户名信息,传递给服务器进行校验: 2.属性: onreadystatechange:事件,该事件可以感知ajax状态(readyState)的变化.aj ...

  2. Django day01 web应用程序 , http协议

    一:web应用程序1.什么是web应用程序 是一种可以通过web访问的应用程序,最大的好处就是, 只要有浏览器,用户就能很容易访问到应用程序 2. web应用程序的优缺点 缺点: 应用程序强调了浏览器 ...

  3. 利用 Puppet 实现自动化管理配置 Linux 计算机集群

    随着虚拟化和云计算技术的兴起,计算机集群的自动化管理和配置成为了数据中心运维管理的热点.对于 IaaS.Paas.Saas 来说,随着业务需求的提升,后台计算机集群的数量也会线性增加.对于数据中心的运 ...

  4. C# 对象克隆,DataTable转LIST

    public class ConvertHelper<T> where T : new() { private static string module = "ConvertHe ...

  5. Oracle调整内存参后报ORA-00844和ORA-00851

    数据库服务器内存由16G增加为64G,为充分利用内存资源,对Oracle内存参数做了如下调整: SQL>alter system set sga_max_size=40960M scope=sp ...

  6. 小程序开发之搭建WebSocket的WSS环境(Apache+WorkerMan框架+PHP)

    最近公司的一个IoT项目用到了小程序的WSS协议环境,现在把整个的搭建开发过程分享给大家. 这里我们用的是WorkerMan框架,服务器是CentOS,Web服务器是Apache,开发语言是PHP. ...

  7. Mysql Event 自动分表

    create table TempComments Like dycomments; 上述 SQL语句创建的新表带有原表的所有属性,主键,索引等. 自动分表怎么做呢? 使用上述语句自动创建分表. 那么 ...

  8. Error:CreateProcess error=216的错误,JDK版本不匹配问题。

    今天刚下载安装完android studio,结果随便新建一个工程的时候就出现了如下提示: Error:CreateProcess error=216, 该版本的 %1 与您运行的 Windows 版 ...

  9. Caffe: Vs13添加CUDA支持

    1.  右键工程 点击:Building Dependency 右击:Build Customizations 点击选项:CUDA 7.5 2.添加C++依赖: cudart.lib kernel32 ...

  10. 移动端mui常用方法

    本文分享一些用Mui的时候所采的坑 1.mui中上拉刷新事件a标签中的链接.元素onclick事件在手机上点击不了 mui('body').on('tap','a',function(){docume ...