C++编程->pair(对组)
pair 是 一种模版类型。每一个pair 能够存储两个值。这两种值无限制,能够是tuple。vector ,string,struct等等。
首先来看一下pair的函数
初始化。复制等相关操作例如以下:
| default (1) |
constexpr pair(); |
|---|---|
| copy / move (2) |
template<class U, class V> pair (const pair<U,V>& pr); |
| initialization (3) |
pair (const first_type& a, const second_type& b); |
| piecewise (4) |
template <class... Args1, class... Args2> |
// pair TEMPLATE FUNCTIONS
//交换函数
template<class _Ty1,
class _Ty2> inline
void swap(pair<_Ty1, _Ty2>& _Left, pair<_Ty1, _Ty2>& _Right)
{ // swap _Left and _Right pairs
_Left.swap(_Right);
}
//推断是否相等函数
template<class _Ty1,
class _Ty2> inline
bool operator==(const pair<_Ty1, _Ty2>& _Left,
const pair<_Ty1, _Ty2>& _Right)
{ // test for pair equality
return (_Left.first == _Right.first && _Left.second == _Right.second);//两个元素都比較
}
//推断是否不等函数
template<class _Ty1,
class _Ty2> inline
bool operator!=(const pair<_Ty1, _Ty2>& _Left,
const pair<_Ty1, _Ty2>& _Right)
{ // test for pair inequality
return (!(_Left == _Right));
}
//推断是否小于函数
template<class _Ty1,
class _Ty2> inline
bool operator<(const pair<_Ty1, _Ty2>& _Left,
const pair<_Ty1, _Ty2>& _Right)
{ // test if _Left < _Right for pairs
return (_Left.first < _Right.first ||
!(_Right.first < _Left.first) && _Left.second < _Right.second);
}
//推断是否大于函数
template<class _Ty1,
class _Ty2> inline
bool operator>(const pair<_Ty1, _Ty2>& _Left,
const pair<_Ty1, _Ty2>& _Right)
{ // test if _Left > _Right for pairs
return (_Right < _Left);
}
//推断是否小于等于函数
template<class _Ty1,
class _Ty2> inline
bool operator<=(const pair<_Ty1, _Ty2>& _Left,
const pair<_Ty1, _Ty2>& _Right)
{ // test if _Left <= _Right for pairs
return (!(_Right < _Left));
}
//推断是否大于等于函数
template<class _Ty1,
class _Ty2> inline
bool operator>=(const pair<_Ty1, _Ty2>& _Left,
const pair<_Ty1, _Ty2>& _Right)
{ // test if _Left >= _Right for pairs
return (!(_Left < _Right));
}
贴一段代码:
//pair 定义
pair<string,int>pair1; //pair 定义以及赋值一
pair<string,int>pair2("lily",4);
pair<string,int>pair3(pair2); //pair 赋值方式二
pair1=make_pair(string("tom"),3); //pair 赋值方式三
pair1.first="jim";
pair1.second=2; //pair 赋值方式四
get<0>(pair1)=string("jim");
get<1>(pair1)=6; //pair 赋值方式五
swap(pair1,pair3); //pair 输出方式一
cout<<pair2.first<<endl;
cout<<pair2.second<<endl; //pair 输出方式二
cout<<get<0>(pair1)<<endl;
cout<<get<1>(pair1)<<endl;
C++编程->pair(对组)的更多相关文章
- pair 对组
pair 对组 c++ 基础 2016-05-10 19:42 154人阅读 评论(0) 收藏 举报 分类: 头文件的函数精粹(12) 版权声明:本文为博主原创文章,未经博主允许不得转载. 与关联 ...
- Unix/Linux环境C编程入门教程(35) 编程管理系统中的组
组管理相关函数介绍 相关函数 getgid,setgid,setregid 表头文件 #include<unistd.h> #include<sys/types.h> 定 ...
- linux网络编程之一-----多播(组播)编程
什么是多播 组播(Multicast)是网络一种点对多(one to many)的通信方式,通过报文复制完成网络中一台server对应多台接收者的高效数据传 送.对其形象的比喻就是类似于广播电台和电视 ...
- STL之pair对组
#include<iostream> #include<algorithm> #include<cstring> #include<cstdlib> u ...
- pair对组
一.pair基本概念 对组(pair)将一对值组合成一个值,这一对值可以具有不同的数据类型,两个值可以分别用pair的两个公有函数first和second访问. 类模板:template <cl ...
- 结对编程-Core 第12组 [pb15061359+pb15061351]
一.项目要求 1.输入题目数量,生成操作数为3~5个的四则运算题目 2.输入上限值控制生成的操作数的最大值以及结果的最大值 3.输入支持的操作符类型:加.减.乘.除.乘方.括号 4.输入支持的操作数类 ...
- 编程算法 - 连续子数组的最大和 代码(C)
连续子数组的最大和 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入一个整型数组, 数组里有正数也有负数. 数组中一个或连续的多个整数组成一 ...
- Linux编程 16 文件权限(组管理 groupadd, groupmod,文件权限介绍)
一.用户组 前面章节知道用户账户在控制单个用户安全性方面很好,但涉及到共享资源或把用户类型分组时,组概念就出来了. 组权限允许多个用户对系统中的对象(比如文件,目录,设备等)共享一组共用的权限. 在c ...
- 屏幕编程 F4的帮组用法
PROCESS ON VALUE-REQUEST. * 设置帮助(工作中心) FIELD wa_zppt026-arbpl MODULE mdl_arbpl_f4. *&---------- ...
随机推荐
- E20170821-mk
Dimension n. 尺寸; [复] 面积,范围; [物] 量纲; [数] 次元,度,维;
- webApi上传服务,可重命名,可创建文件夹
webApi上传服务,根据FileName重命名,根据Path创建文件夹 /// <summary> /// 上传文件 /// </summary> /// <retur ...
- 5.7 Liquibase:与具体数据库独立的追踪、管理和应用数据库Scheme变化的工具。-mybatis-generator将数据库表反向生成对应的实体类及基于mybatis的mapper接口和xml映射文件(类似代码生成器)
一. liquibase 使用说明 功能概述:通过xml文件规范化维护数据库表结构及初始化数据. 1.配置不同环境下的数据库信息 (1)创建不同环境的数据库. (2)在resource/liquiba ...
- PHP获取远程和本地文件信息(汇总)
1.PHP filesize() 函数filesize() 函数返回指定文件的大小.若成功,则返回文件大小的字节数.若失败,则返回 false 并生成一条 E_WARNING 级的错误. 但是只能获取 ...
- Go Server Record
Centos Setup Go yum install glibc-headers gcc-c++ # 一键安装shadowsocks 1. wget --no-check-certificate - ...
- Js构造对象-添加方法的三种方式
Js构造函数添加方法有多种方案,来看一个混合方式构造函数的例子:申明person构造函数,有两个属性,name,qq.在原型上添加方法showname.这是最常用的方法. <script> ...
- Phpstudy apache2 配置 https
我tm竟然搞了一下午 最终原因是因为443 端口被 SVN服务器占用了 一定要查看端口是否被占用 太深刻了这次 粗心大意 !!! 1:打开PHPstudy php扩展设置,在php_openssl上点 ...
- 【转载】VMware完全卸载
出现安装时出现vmwareworkstationxxx.msi failed问题是官方解决方案...真心详细. http://kb.vmware.com/selfservice/microsites/ ...
- 原生js通过最外层id获取下面指定的子元素
需求:在vue中使用v-for循环出来的元素,设置动态id,之后获取下面的所有textarea标签 template: <table cellpadding = 2 v-for="(i ...
- 【剑指Offer】32、把数组排成最小的数
题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. ...