C++STL学习Pair

来源:互联网 发布:恋人网软件下载 编辑:程序博客网 时间:2024/05/06 11:36

类模板: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;}








0 0
原创粉丝点击