pair 是 一種模版類型。每個pair 可以存儲兩個值。這兩種值無限制,可以是tuple,vector ,string,struct等等。
首先來看一下pair的函數
初始化,復制等相關操作如下:
constexpr pair();
templatepair (const pair& pr); template pair (pair&& pr); pair (const pair& pr) = default; pair (pair&& pr) = default;
pair (const first_type& a, const second_type& b); templatepair (U&& a, V&& b);
templatepair (piecewise_construct_t pwc, tuple first_args, tuple second_args);
// pair TEMPLATE FUNCTIONS //交換函數 templateinline void swap(pair<_Ty1, _Ty2>& _Left, pair<_Ty1, _Ty2>& _Right) { // swap _Left and _Right pairs _Left.swap(_Right); } //判斷是否相等函數 template inline bool operator==(const pair<_Ty1, _Ty2>& _Left, const pair<_Ty1, _Ty2>& _Right) { // test for pair equality return (_Left.first == _Right.first && _Left.second == _Right.second);//兩個元素都比較 } //判斷是否不等函數 template inline bool operator!=(const pair<_Ty1, _Ty2>& _Left, const pair<_Ty1, _Ty2>& _Right) { // test for pair inequality return (!(_Left == _Right)); } //判斷是否小於函數 template inline bool operator<(const pair<_Ty1, _Ty2>& _Left, const pair<_Ty1, _Ty2>& _Right) { // test if _Left < _Right for pairs return (_Left.first < _Right.first || !(_Right.first < _Left.first) && _Left.second < _Right.second); } //判斷是否大於函數 template inline bool operator>(const pair<_Ty1, _Ty2>& _Left, const pair<_Ty1, _Ty2>& _Right) { // test if _Left > _Right for pairs return (_Right < _Left); } //判斷是否小於等於函數 template inline bool operator<=(const pair<_Ty1, _Ty2>& _Left, const pair<_Ty1, _Ty2>& _Right) { // test if _Left <= _Right for pairs return (!(_Right < _Left)); } //判斷是否大於等於函數 template inline bool operator>=(const pair<_Ty1, _Ty2>& _Left, const pair<_Ty1, _Ty2>& _Right) { // test if _Left >= _Right for pairs return (!(_Left < _Right)); }
//pair 定義 pairpair1; //pair 定義以及賦值一 pair pair2("lily",4); pair pair3(pair2); //pair 賦值方式二 pair1=make_pair(string("tom"),3); //pair 賦值方式三 pair1.first="jim"; pair1.second=2; //pair 賦值方式四 get<0>(pair1)=string("jim"); get<1>(pair1)=6; //pair 賦值方式五 swap(pair1,pair3); //pair 輸出方式一 cout< (pair1)< (pair1)<