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);
template<class U, class V> pair (pair<U,V>&& pr);
pair (const pair& pr) = default;
pair (pair&& pr) = default;
initialization (3)
pair (const first_type& a, const second_type& b);
template<class U, class V> pair (U&& a, V&& b);
piecewise (4)
template <class... Args1, class... Args2>
  pair (piecewise_construct_t pwc, tuple<Args1...> first_args,
                                   tuple<Args2...> second_args);

	// 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(对组),布布扣,bubuko.com

时间: 2024-10-06 08:55:22

C++编程->pair(对组)的相关文章

c++ pair(对组)用法

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

结对编程之子数组最大的和(由于一直登不上我的账号,在规定日期内只在我搭档的博客上交了)

合作照片: 设计思想: 在原程序的基础上,再加一个循环,循环从最后一位数开始,到它之前的数结束: 可以将最后一位数赋给第一个数,剩下的数依次向前进一位: 计算方法和上次相同,每次循环都加上相邻的数,比较是否小于0,若小于0则将和的值赋为0,从下一位重新开始相加:若大于最初的最大值,则将和的值赋给最大值: 上次程序实现了首尾不连接的最大值,这次循环实现首尾连接的最大值,后再比较两次最大值,返回其中最大的值. 合作过程:      首先,两人在一起对编程题目进行讨论,发表自己的见解,并且对上次的编程

结对编程收获-Core10组-PB16110698

本周结对编程追加作业:记录收获.坦白说,我的收获多而杂,一时不知从何说起,以下试图从各方面简要谈谈. 一.编程能力收获 从编程能力方面,我收获的主要是类的设计思路和算法设计.在作业要求blog的指引下,我和同伴一同思考.选用类,最终决定采用我提议的方案,类中的变量名.变量数量都是由我提议和设计完成的,主要基于要求的功能的实现.变量以外,还需要设计类的函数,这就涉及到算法层面.一开始,我对于生成运算式方面非常生疏,翻了半天谭浩强红皮书,又在团队作业的小组中讨论了一阵,终于决定采用树的形式生成,辅以

STL之pair对组

1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 #include<cstdlib> 5 using namespace std; 6 7 //创建对组 8 void test01(){ 9 /*方法一:*/ 10 pair<int,int> pair1(10,20); 11 cout<<pair1.first<<" "&l

【转】编程词汇

很实用的编程英语词库,共收录一千五百余条词汇. 第一部分: application 应用程式 应用.应用程序 application framework 应用程式框架.应用框架 应用程序框架 architecture 架构.系统架构 体系结构 argument 引数(传给函式的值).叁见 parameter 叁数.实质叁数.实叁.自变量 array 阵列 数组 arrow operator arrow(箭头)运算子 箭头操作符 assembly 装配件 assembly language 组合语

编程词汇

application 应用程式 应用.应用程序 application framework 应用程式框架.应用框架 应用程序框架 architecture 架构.系统架构 体系结构 argument 引数(传给函式的值).叁见 parameter 叁数.实质叁数.实叁.自变量 array 阵列 数组 arrow operator arrow(箭头)运算子 箭头操作符 assembly 装配件 assembly language 组合语言 汇编语言 assert(ion) 断言 assign 指

编程常用英语词汇大全

很实用的编程英语词库,共收录一千五百余条词汇. 第一部分: application 应用程式 应用.应用程序 application framework 应用程式框架.应用框架 应用程序框架 architecture 架构.系统架构 体系结构 argument 引数(传给函式的值).叁见 parameter 叁数.实质叁数.实叁.自变量 array 阵列 数组 arrow operator arrow(箭头)运算子 箭头操作符 assembly 装配件 assembly language 组合语

编程常用英语单词【2016.6月之前熟记要求会默写】

笨人用笨办法,要求熟记,默写,必须做到. 第一部分.计算机算法常用术语中英对照Data Structures 基本数据结构 Dictionaries 字典 Priority Queues 堆 Graph Data Structures 图 Set Data Structures 集合 Kd-Trees 线段树 Numerical Problems 数值问题 Solving Linear Equations 线性方程组 Bandwidth Reduction 带宽压缩 Matrix Multipl

编程常用英语单词

application 应用程式 应用.应用程序 application framework 应用程式框架.应用框架 应用程序框架 architecture 架构.系统架构 体系结构 argument 引数(传给函式的值).叁见 parameter 叁数.实质叁数.实叁.自变量 array 阵列 数组 arrow operator arrow(箭头)运算子 箭头操作符 assembly 装配件 assembly language 组合语言 汇编语言 assert(ion) 断言 assign 指