C++STL学习Pair

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


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


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


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



具体用法:


1.定义(构造):


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

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


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:

对已经初始化的进行修改:

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

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

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


(2)变量间赋值:

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

4.简化使用

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

#include<bits/stdc++.h>
using namespace std;

typedef pair<string, string> PSS;    
typedef pair<int, int> PII;
typedef pair<string, int> PSI;
PSS name("first", "second");
PII point(1, 2);
PSI associative("str", 123);

int main()
{
   cout << name.first << " " << name.second << endl;
   cout << point.first << " " << point.second << endl;
   cout << associative.first << " " << associative.second << endl;
   return 0;
}








原文地址:https://www.cnblogs.com/lzq1126/p/5596852.html