Pair类型概述

pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同,基本的定义如下:

pair<int, string> a;

表示a中有两个类型,第一个元素是int型的,第二个元素是string类型的,如果创建pair的时候没有对其进行初始化,则调用默认构造函数对其初始化。

pair<string, string> a("James", "Joy");

也可以像上面一样在定义的时候直接对其初始化。

由于pair类型的使用比较繁琐,因为如果要定义多个形同的pair类型的时候,可以时候typedef简化声明:

typedef pair<string, string> author;

author pro("May", "Lily");

author joye("James", "Joyce");

Pair对象的操作

  • 对于pair类,由于它只有两个元素,分别名为first和second,因此直接使用普通的点操作符即可访问其成员

pair<string, string> a("Lily", "Poly");

string name;

name = pair.second;

  • 生成新的pair对象

可以使用make_pair对已存在的两个数据构造一个新的pair类型:

int a = 8;

string m = "James";

pair<int, string> newone;

newone = make_pair(a, m);

1#include <iostream>
2#include <utility>
3#include <string>
4usingnamespace std;
5
6int main () {
7pair <string,double> product1 ("tomatoes",3.25);
8pair <string,double> product2;
9pair <string,double> product3;
10
11product2.first ="lightbulbs"; // type of first is string
12product2.second =0.99; // type of second is double
13
14product3 = make_pair ("shoes",20.0);
15
16cout <<"The price of "<< product1.first <<" is $"<< product1.second <<"\n";
17cout <<"The price of "<< product2.first <<" is $"<< product2.second <<"\n";
18cout <<"The price of "<< product3.first <<" is $"<< product3.second <<"\n";
19return0;
20}
其运行结果如下:
1The price of tomatoes is $3.25
2The price of lightbulbs is $0.99
3The price of shoes is $20
 
 
 
 
 
01 pair  vs  make_pair
02 make_pair constructs a pair object.
03 template
04 pair make_pair(T1 x, T2 y)
05 {
06     return pair(x, y);
07 }
08
09 eg:  std::pair("sn001", 12.5);
10        std::make_pair("sn001", 12.5);
11        两者效果一样。
12 倘若:std::pair("sn002", 12.6);   // 12.6's datatype is float
13         std::make_pair("sn002",12.6);  // 12.6's datatype is double
14 使用:
15         std::pair m_pairA;
16         m_pairA = std::make_pair("sn001", 12.5);
17         std::cout<<m_pairA.first<<"  "<<m_pairA.second<<std::endl;
18 结合map的简单使用:
19         std::pair m_pairA;
20         m_pairA = std::make_pair("sn001", 12.5);
21         //std::cout<<m_pairA.first<<"  "<<m_pairA.second<<std::endl;
22         std::map m_mapA;
23         m_mapA.insert(m_pairA);
24         std::map::iterator iter = m_mapA.begin();
25         std::cout<<iter->first<<"  "<<iter->second<<std::endl;
小结:
  make_pair创建的是一个pair对象。使用都很方便,针对成对出现的数据,如书的ISBN对应一个书名。
  pair是单个数据对的操作,pair是一struct类型,有两个成员变量,通过first,second来访问,用的是“.”访问。
  map是一个关联容器,里面存放的是键值对,容器中每一元素都是pair类型,通过map的insert()方法来插入元素(pair类型)。

[ZZ] C++ pair的更多相关文章

  1. pat1091-1100

    1091bfs傻逼题,dfs会爆栈 #include<iostream> #include<cstdio> #include<cstring> #include&l ...

  2. The Balance(poj2142)

    The Balance Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 5452   Accepted: 2380 Descr ...

  3. Queue Pair in RDMA (zz)

    Queue Pair in RDMA 首页分类标签留言关于订阅2018-03-21 | 分类 Network  | 标签 RDMA 一个CA(Channel Adapter)可以包含多个QP,QP相当 ...

  4. c++ pair 使用

    1. 包含头文件: #include <utility> 2. pair 的操作: pair<T1,T2> p; pair<T1,T2> p(v1,v2); pai ...

  5. 论Pair的重要性

    这些天我在用React和D3做图表,从已经实现的图表里复制了一些坐标轴的代码,发现坐标轴上的n个点里,只有第一个点下面能渲染出文字提示,其余点下面都无法渲染出文字. 和组里的FL一起百思不得其解好几天 ...

  6. 2016 ACM/ICPC Asia Regional Dalian Online 1010 Weak Pair dfs序+分块

    Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submissio ...

  7. pair的使用

    #include<iostream> #include<cmath> #include<cstdio> #include<algorithm> #inc ...

  8. 【C++】pair

    STL的pair,有两个值,可以是不同的类型. template <class T1, class T2> struct pair; 注意,pair在头文件utility中,不要inclu ...

  9. hackerrank Similar Pair

    传送门 Problem Statement You are given a tree where each node is labeled from 1 to n. How many similar ...

随机推荐

  1. 生成24位字符串ID__IdGenerator.java

    此工具类用于生成24位字符串ID,唯一不重复.直接通过 IdGenerator.get() 获取. 源码如下:(点击下载源码 - IdGenerator.java ) import java.net. ...

  2. asp天猫自主发码的请求

    这几天在做天猫自主发码.实现了通知和核销部门.其他的部分待后续实现. 值得注意的是consume回调中,要加入sign_method=md5

  3. 多线程安全的HTTPCLIENT

    private static HttpClient httpClient;     static {           HttpParams params = new BasicHttpParams ...

  4. Trianglify – 五彩缤纷的 SVG 背景图案

    Trianglify 是一个能够生成五颜六色的三角形图案的 JavaScript 库,可以用来作为 SVG 图像和 CSS 背景.它的灵感来自于 Btmills 的 Geopattern,并使用 d3 ...

  5. 相对定位、绝对定位在IE6的问题

    注意: 关于绝对定位,在IE6下定位元素的父级宽高都为奇数那么在IE6下定位元素的right,bottom都有一像素的偏差(left,top无偏差).因此应尽量使用偶数. 关于绝对定位,在IE6下父级 ...

  6. 比较满意设计的一次作业 JDBC宠物管理

    package com.dao; import java.util.List; import com.entity.Master; public interface MasterDao { publi ...

  7. linux 命令行字符终端terminal下强制清空回收站

    回收站其实就是一个文件夹,存放被删掉的文件. ubuntu 回收站的路径: $HOME/.local/share/Trash/ 强制清空回收站: rm -fr $HOME/.local/share/T ...

  8. 【解题报告】[动态规划] RQNOJ PID5 / 能量项链

    原题地址:http://www.rqnoj.cn/problem/5 解题思路: 今天刚刚才知道了区间DP..Orz..本来以为是状态压缩DP,后来看到数据量才发现原来不是.后来参考了别人的题解.自己 ...

  9. Android 多进程编程 15问15答!

    ps:阅读本文 需要对android 多进程编程有一定了解. 1.Android中总共有几种方式进行IPC? 答:一共有两种,一种是binder 还有一种是socket.Binder 大家用的比较多. ...

  10. 自定义视图一:扩展现有的视图,添加新的XML属性

    这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! 简介 这个系列详细的介绍了如何穿件Android自定义视图.主要涉及的内容有如何绘制内容,layout和measure的原理,如何继承 ...