今天再看《c++標準庫》,遇到了以前貌似有點印象的pair,特意記錄下來,免得以後忘記了。下面是在vs檢視pair定義的一部分**(貌似很多,只貼一部分)
templatestruct pair
: public _pair_base<_ty1 _ty2>
pair(const _ty1& _val1, const _ty2& _val2)
: _mybase(_val1, _val2)
templatepair(pair<_other1 _other2>& _right)
: _mybase(_right.first, _right.second)
templatepair(const pair<_other1 _other2>& _right)
: _mybase(_right.first, _right.second)
void swap(_myt& _right)
}_myt& operator=(const _myt& _right)
typedef typename tr1::remove_reference<_ty1>::type _ty1x;
typedef typename tr1::remove_reference<_ty2>::type _ty2x;
pair(_ty1x&& _val1, _ty2x&& _val2)
: _mybase(_std move(_val1),
_std move(_val2))
pair(const _ty1x& _val1, _ty2x&& _val2)
: _mybase(_val1,
_std move(_val2))
pair(_ty1x&& _val1, const _ty2x& _val2)
: _mybase(_std move(_val1),
_val2)
templatepair(_other1&& _val1, _other2&& _val2)
: _mybase(_std forward<_other1>(_val1),
_std forward<_other2>(_val2))
templatepair(pair<_other1 _other2>&& _right)
: _mybase(_std forward<_other1>(_right.first),
_std forward<_other2>(_right.second))
pair& operator=(pair<_ty1 _ty2>&& _right)
void swap(_myt&& _right)
}}; // pair template functions
templateinline
void swap(pair<_ty1 _ty2>& _left, pair<_ty1 _ty2>& _right)
templateinline
void swap(pair<_ty1 _ty2>& _left, pair<_ty1 _ty2>&& _right)
templateinline
void swap(pair<_ty1 _ty2>&& _left, pair<_ty1 _ty2>& _right)
templateinline
bool operator==(const pair<_ty1 _ty2>& _left,
const pair<_ty1 _ty2>& _right)
templateinline
bool operator!=(const pair<_ty1 _ty2>& _left,
const pair<_ty1 _ty2>& _right)
templateinline
bool operator& _left,
const pair<_ty1 _ty2>& _right)
templateinline
bool operator>(const pair<_ty1 _ty2>& _left,
const pair<_ty1 _ty2>& _right)
templateinline
bool operator<=(const pair<_ty1 _ty2>& _left,
const pair<_ty1 _ty2>& _right)
templateinline
bool operator>=(const pair<_ty1 _ty2>& _left,
const pair<_ty1 _ty2>& _right)
// template function make_pair
templateinline
pair::type,
typename _unrefwrap<_ty2>::type>
make_pair(_ty1&& _val1, _ty2&& _val2)
templateinline
pair::type,
typename _unrefwrap<_ty2>::type>
make_pair(const _ty1& _val1, _ty2&& _val2)
templateinline
pair::type,
typename _unrefwrap<_ty2>::type>
make_pair(_ty1&& _val1, const _ty2& _val2)
templateinline
pair::type,
typename _unrefwrap<_ty2>::type>
make_pair(const _ty1& _val1, const _ty2& _val2)
#if _has_cpp0x
templateinline
_init begin(const pair<_init _init>& _pair)
templateinline
_init end(const pair<_init _init>& _pair)
#endif /* _has_cpp0x */
// template operators
namespace rel_ops
很亂是吧(ps:我也不知道貼的對不對,哈哈...)不過從上面的**中大概可以看出,它已經幫我們實現了一些基本的執行,例如swap(兩個pair資料的交換),還有paire的比較等。下面是測試**(環境vs2010):
#include #include //使用pair需要新增此檔案才能識別
#include using namespace std;
int main()
{ cout<
pairp2;
p2.first = "people";
p2.second = 5.99;
pairp3 = make_pair("lining",361.0);
pairp4 = make_pair("anta",400);
cout<
//cout<
輸出結果:
注:stl容器中的map和mutimap就是使用pairs來管理鍵值對。任何函式需要返回兩個值,也需要pair.還有就是兩個pair互相比較時,第一元素具有較高的優先順序。所以兩個pairs的的第一元素不相等,其比較結果就成為整個比較行為的結果。如果第一元素相等,才繼續比較第二元素,並把比較結果當做整體比較結果。
好了,睡覺,明天繼續加油啃《c++標準庫》
SpringBoot Swagger簡單使用
io.springfox springfox swagger2 2.9.2 io.springfox springfox swagger ui 2.9.2 import org.springframework.context.annotation.bean import org.springfram...
UICollectionView的簡單使用
所屬controller要遵循三個協議 uicollectionviewdatasource,uicollectionviewdelegate,uicollectionviewdelegateflowlayout uicollectionviewflowlayout flowlayout uicol...
BGAQRCode Android的簡單使用
compile com.google.zxing core 3.2.1 xmlns android 這句是使用選擇器框架時用到的 xmlns tools package com.huaqiang.zxingdemo 選擇框架用到 android name android.permission.cam...