Pair類型概述
pair是一種模板類型,其中包含兩個數據值,兩個數據的類型可以不同
1.定義(構造):
1 pair<int, double> p1; //使用默認構造函數 2 pair<int, double> p2(1, 2.4); //用給定值初始化 3 pair<int ,int > p1= make_pair(5,6); // 用make_pair構建對象 4 pair<int, double> p3(p2); //拷貝構造函數
如果有三個屬性的話,其實也是可以用的pair 的 ,極端的寫法 pair <int ,pair<int ,int > >。(后邊的兩個 > > 要有空格,否則就會是 >> 位移運算符)
(2)變量間賦值
1 pair<int, double> p1(1, 1.2); 2 pair<int, double> p2 = p1;
由於pair類型的使用比較繁瑣,因為如果要定義多個形同的pair類型的時候,可以時候typedef簡化聲明:
1 typedef pair<string, string> author; 2 author pro("May", "Lily"); 3 author joye("James", "Joyce");
(3)取得pair的值
每個pair 都有兩個屬性值 first 和second
cout<<p1.first<<p1.second; 注意是屬性值而不是方法。
(4)比較大小
兩個pair對象之間的小於運算,其定義遵循字典次序:如果
p1.first < p2.first or !(p2.first < p1.first && p1.second < p2.second,則返回true
bool compare1 = p1 > p2;
如果兩個pair對象的first和second依次相等,則這兩個對象相等。
(5)模板
1 template <class T1, class T2> struct pair 2 { 3 typedef T1 first_type; 4 typedef T2 second_type; 5
6 T1 first; 7 T2 second; 8 pair() : first(T1()), second(T2()) {} 9 pair(const T1& x, const T2& y) : first(x), second(y) {} 10 template <class U, class V>
11 pair (const pair<U,V> &p) : first(p.first), second(p.second) { } 12 }