[ZZ] C++ pair

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类型)。

时间: 2024-10-12 12:48:19

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

递归编程之我见

Table of Contents 1 前言 2 递归简介 3 利用数学知识深入对递归的认知 3.1 "求解最大素数伴侣数量"的实现 3.2 进一步改进 3.2.1 减少测试的重复性 3.2.2 当找到最优解时提前结束 4 完整的程序代码 前言 今天做了一个题目<素数伴侣>,具体如下: 输入:偶数个正整数,如,1,2,3,4 处理过程:将偶数个正整数进行配对处理,如a: (1,2)(3,4); b: (1,3)(2,4); c: (1,4)(2,3),配对的整数进行求和,a

寻找房间中心zz

Finding the Centroid of a Room Boundary It's been a while since my last post and I'm sure most of you were like... "Where the hell is Don!".... it's ok! I'm still around. I've been busy working on stuff I can't talk about. Don't worry though, I'

C++学习 之pair

Pair类型概述 pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同,基本的定义如下: pair<int, string> a; 表示a中有两个类型,第一个元素是int型的,第二个元素是string类型的,如果创建pair的时候没有对其进行初始化,则调用默认构造函数对其初始化. pair<string, string> a("James", "Joy"); 也可以像上面一样在定义的时候直接对其初始化. 由于pair类型的使用比

没为类型 Node 定义方法 getTextContent (zz)

没有为类型 Node 定义方法 getTextContent (zz) 晚上下班的时候,把班上写了半截的代码带了回来.结果回到家后出乎意料的是回来的时候将代码导入eclipse后,下面这行代码就直接报错了,显示 getTextContent()未定义 . ((Element) ele.getElementsByTagName( "err_code").item(0 )).getTextContent(); 首先想到的是jdk 的版本问题,不可能啊,我昨天才装的jdk 1.6.0_24

Linux 信号signal处理机制(ZZ)

http://www.cnblogs.com/taobataoma/archive/2007/08/30/875743.html 信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念.Linux对信号机制的大致实现方法.如何使用信号,以及有关信号的几个系统调用. 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断.从它的命名可以看出,它的实质和使用很象中断.所以,信号可以说是进程控制的一部分. 一.信号的基本概念 本节先介绍信号的一些基本概念,然后

C++ STL pair详解

一.解释: p { margin-bottom: 0.25cm; direction: ltr; color: #00000a; line-height: 120%; text-align: left; orphans: 2; widows: 2 } p.western { font-family: "Liberation Serif", serif; font-size: 12pt } p.cjk { font-family: "Noto Sans CJK SC Regul

C++ pair用法

 pair 默认对first升序,当first相同时对second升序: 类模板:template <class T1, class T2> struct pair 参数:T1是第一个值的数据类型,T2是第二个值的数据类型. 功能:pair将一对值组合成一个值,这一对值可以具有不同的数据类型(T1和T2),两个值可以分别用pair的两个公有函数first和second访问. 具体用法: 1.定义(构造): 1 pair<int, double> p1; //使用默认构造函数 2 p

RFID Exploration and Spoofer a bipolar transistor, a pair of FETs, and a rectifying full-bridge followed by a loading FET

RFID Exploration Louis Yi, Mary Ruthven, Kevin O'Toole, & Jay Patterson What did you do? We made an Radio Frequency ID (RFID) card reader and, while attempting to create a long-range spoofer, created an jammer which overcomes card's signals. The read

pair

这个是非常经典的树分治的题目,关于60分的做法.参见poj1741 按照树分治的惯例,先全局统计,然后再减掉重复的东西. 那么如何计算贡献呢? 我们按照poj1741的方法.先将满足一维的情况的数据全部放入一个树状数组里面,然后我们就能够一维统计了. 复杂度O(nlog2n) 代码也比较凑合.... #include<cstdlib> #include<cstdio> #include<cstring> #include<algorithm> #includ