C++ pair的用法实例详解

翻译 2018年04月15日 11:32:38

C++ pair的用法实例详解

1 pair的应用

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

2 make_pair函数


1
template pair make_pair(T1 a, T2 b) { return pair(a, b); }

很明显,我们可以使用pair的构造函数也可以使用make_pair来生成我们需要的pair。 一般make_pair都使用在需要pair做参数的位置,可以直接调用make_pair生成pair对象很方便,代码也很清晰。 另一个使用的方面就是pair可以接受隐式的类型转换,这样可以获得更高的灵活度。灵活度也带来了一些问题如:


1
2
3
std::pair<int, float>(1, 1.1);
 
std::make_pair(1, 1.1);

是不同的,第一个就是float,而第2个会自己匹配成double。

类模板:template <class T1, class T2> struct pair

参数:T1是第一个值的数据类型,T2是第二个值的数据类型。

功能:pair将一对值组合成一个值,这一对值可以具有不同的数据类型(T1和T2),两个值可以分别用pair的两个公有函数first和second访问。

具体用法:

1.定义(构造):


1
2
3
pair<int, double> p1; //使用默认构造函数
pair<int, double> p2(1, 2.4); //用给定值初始化
pair<int, double> p3(p2); //拷贝构造函数

2.访问两个元素(通过first和second):


1
2
3
4
pair<int, double> p1; //使用默认构造函数
p1.first = 1;
p1.second = 2.5;
cout << p1.first << ' ' << p1.second << endl;

输出结果:1 2.5

3.赋值operator = :

(1)利用make_pair:


1
2
pair<int, double> p1;
p1 = make_pair(1, 1.2);

  (2)变量间赋值:


1
2
pair<int, double> p1(1, 1.2);
pair<int, double> p2 = p1;

Pair类型概述

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


1
pair<int, string> a;

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


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

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

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


1
2
3
typedef pair<string, string> author;
author pro("May", "Lily");
author joye("James", "Joyce");

 Pair对象的操作 

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


1
2
3
pair<string, string> a("Lily", "Poly");
string name;
name = pair.second;

生成新的pair对象

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

1
2
3
4
int a = 8;
string m = "James";
pair<int, string> newone;
newone = make_pair(a, m);

c++ pair 用法详解

原文出处:http://www.cnblogs.com/archimedes/p/cpp-pair.html C++pair类型 标准库类型--pair类型定义在utility头文...
  • sinat_35121480
  • sinat_35121480
  • 2017-01-25 10:21:51
  • 5384

C++标准库---pair用法及实现

pair的类型:     pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同,基本的定义如下:     pair p;     pair p; ...
  • lanzhihui_10086
  • lanzhihui_10086
  • 2014-11-22 16:39:33
  • 3557

C++:map容器和pair的结合使用

一、map和pair简介   可以简单的理解为如下:map可以当做一个容器(装载具有一定格式的数据);pair可以理解为元素(放入到容器的的一个个个体),发现pair并没有单独行动的典型用法,正常都...
  • xiaofeiaiai
  • xiaofeiaiai
  • 2014-02-09 14:49:59
  • 2128

关于C++ map容器的使用和pair类型及函数

首先make_pair Pairs  C++标准程序库中凡是“必须返回两个值”的函数, 也都会利用pair对象  class pair可以将两个值视为一...
  • yo_bc
  • yo_bc
  • 2017-03-10 11:55:13
  • 2902

stl中pair容器的用法

有时候,要用pair的时候就会忘记了,又得重新翻资料,所以在blog中总结一下 简而言之pair就是一个结构体,但是比结构体更加得灵活 template struct pair //模板...
  • zycxnanwang
  • zycxnanwang
  • 2016-09-01 20:56:51
  • 1799

Android学习之Pair类 (android.util.Pair )

官方文档:https://developer.android.com/reference/android/util/Pair.html 机缘巧合看见了Pair这个类,网上介绍不多(可能是因为太简...
  • qq_24889075
  • qq_24889075
  • 2016-08-08 15:37:28
  • 9261

Pair的使用,以及typedef的使用,make_pair的使用

1.首先要声明头文件     using  std::pair;2.typedef的使用3.make_pair    使用需引入using std::make_pairE.G:  #include #...
  • yuwei19840916
  • yuwei19840916
  • 2008-11-01 15:00:00
  • 11844

C++的队列和pair

C++队列Queue类成员函数如下: back()返回最后一个元素 empty()如果队列空则返回真 front()返回第一个元素 pop()删除第一个元素 push()在末尾加入一个元素 size(...
  • Enterprise_
  • Enterprise_
  • 2017-06-24 22:17:55
  • 467

pair和make_pair用法

[cpp] view plaincopyprint? // pair简单讲就是将两个数据整合成一个数据   // 本质上是有first, second两个成员变量的结构...
  • wangkai_123456
  • wangkai_123456
  • 2015-12-18 16:59:42
  • 1860

C++STL中的tuple 与 pair (piecewise construction)

tuple t(1, 2.22);     pair p1(42, t);     pair p2(piecewise_construct_t, make_tuple(32), t); 看STL...
  • hahahzzzzz
  • hahahzzzzz
  • 2016-05-19 20:35:04
  • 705
收藏助手
不良信息举报
您举报文章:C++ pair的用法实例详解
举报原因:
原因补充:

(最多只允许输入30个字)