C++學習-資料結構-pair型別
阿新 • • 發佈:2020-12-06
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 。
資料來源:
- https://blog.csdn.net/duan19920101/article/details/50724840
- https://blog.csdn.net/wangyin159/article/details/47121619?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-6.not_use_machine_learn_pai&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-6.not_use_machine_learn_pai