STL pair make pair簡單使用

2021-06-20 23:25:28 字數 3806 閱讀 7564

今天再看《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...