C++ pair

1. pair 简介

1.1 功能

//类模板:
template<class _T1, class _T2> struct pair
{
	typedef _T1 first_type;
	typedef _T2 second_type;
	_T1 first;
	_T2 second;
	
	pair(): first(), second()
	 { }
	 
	pair(const _T1& __a, const _T2& __b)
	: first(__a), second(__b) 
	{ }
	
	template<class _U1, class _U2>pair(const pair<_U1, _U2>& __p)
	: first(__p.first), second(__p.second) 
	{ }
};

模板参数:T1是第一个值的数据类型,T2是第二个值的数据类型。 这一对值可以具有不同的数据类型(T1和T2),两个值可以分别用pair的两个公有函数firstsecond访问。

2. pair 的使用场景举例

  • map/multimap 类 中存放的就是pair 对象。
  • 当一个函数需要返回两个数据时可以使用pair。

3. pair 的使用

3.1 创建pair

pair<int, string> student;        // 创建一个空对象student,第一个元素为int类型 第二哥元素为string类型
pair<string, vector<int> > line;  // 创建一个空对象line,两个元素类型分别是string和vector类型

3.2 创建时初始化

pair<string, string> author("James","Joy");    // 创建一个author对象,两个元素类型分别为string类型,并默认初始值为James和Joy。
pair<string, int> name_age("Tom", 18);
pair<string, int> name_age2(name_age);    // 拷贝构造初始化

3.3 pair类对象间赋值

pair<int, double> p1(1, 1.2);
pair<int, double> p2 = p1;     // copy construction to initialize object
pair<int, double> p3;
p3 = p1;    // operator =

3.4 使用make_pair 函数生成pair

pair<int, double> p1;
p1 = make_pair(1, 1.2);
cout << p1.first << p1.second << endl;
 //output: 1 1.2
int a = 8; 
string m = "James";
pair<int, string> newone;
newone = make_pair(a, m);
cout << newone.first << newone.second << endl;
//output: 8 James

pair 模板类对象中有一个 模板构造函数,具有自动推断 make_pair 的参数类型的功能。

3.5 操作pair

pair<int ,double> p1;
p1.first = 1;
p1.second = 2.5;
cout<<p1.first<<' '<<p1.second<<endl;
//输出结果:1 2.5
string firstBook;
if(author.first=="James" && author.second=="Joy")
    firstBook="Stephen Hero";
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值