1. 程式人生 > 實用技巧 >C++學習-資料結構-pair型別

C++學習-資料結構-pair型別

pair型別

別人那裡複製的,並添加了自己的修改和理解

標頭檔案:#include<utility>(iostream自帶)

pair是一種模板型別,其中包含兩個資料值,兩個資料的型別可以不同。

1、類模板:template <class T1, class T2> struct pair

引數:T1是第一個值的資料型別,T2是第二個值的資料型別。

功能:pair將一對值組合成一個值,這一對值可以具有不同的資料型別(T1和T2),兩個值可以分別用pair的兩個公有函式first和second訪問。

距離:定義:pair<int, string> a;

表示a中有兩個型別,第一個元素是int型的,第二個元素是string型別的,如果建立pair的時候沒有對其進行初始化,則呼叫預設建構函式對其初始化。

2、初始化:

pair<int, double> p1;  //使用預設建構函式   

pair<int, double> p2(1, 2.4);  //用給定值初始化  在定義的時候直接對其初始化  

pair<int, double> p3(p2);  //拷貝建構函式

如果要定義多個形同的pair型別的時候,可以使用typedef簡化宣告:

typedef pair<string, string> author;

author pro("May", "Lily");

author joye("James", "Joyce");

3、pair物件的操作

對於pair類,由於它只有兩個元素,分別名為first和second,因此直接使用普通的點操作符即可訪問其成員

pair<string, string> a("Lily", "Poly"); 

string name;

name = a.second;

cout<<a.first<<a.second; 

注意是屬性值而不是方法。

通過迭代器對map進行訪問,用的是迭代器名->first,迭代器名->second,注意不要混淆

4、生成新的pair物件:

(1)可以使用make_pair對已存在的兩個資料構造一個新的pair型別。

int a = 8;

string m = "James";

pair<int, string> newone;

newone = make_pair(a, m);

或:pair<int, double> p1; 

p1 = make_pair(1, 1.2); 

(2)變數間賦值:

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

pair<int, double> p2 = p1;

5、 pair之間的比較

在<utility>中已經定義了pair上的六個比較運算子:<、>、<=、>=、==、!=,其規則是先比較first,first相等時再比較second,這符合大多數應用的邏輯

pair<int,string> a1={1,"abc"};

pair<int,string> a2=make_pair(1,"abcd");

bool flag=a1<=a2;

cout<<flag;

輸出為 1 。

資料來源: