STL pair類型的介紹

pair標準庫類型它定義在頭文件utility中。函數

一個pair保存兩個數據成員。相似容器,pair是一個用來生成特定類型的模板。當建立一個pair時,咱們必須提供兩個類型名,pair的數據成員將具備對應的類型。兩個類型不要求同樣:blog

pair<string,string>anon;//保存兩個string
pair<string,size_t>word_count;//保存一個string和一個size_t
pair<string,vector<int>line>;//保存string和vector<int>

  pair的默認構造函數對數據成員進行值初始化。所以,anon是一個包含兩個空string的pair。line保存一個空string和一個空vector。word_count中的size_t成員值爲0,而string成員被初始化爲空。排序

咱們能夠爲每個成員提供初始化器:string

pair<string,string>author{"James","Joyce"};it

這條語句建立了一個author的pair,兩個成員被初始化爲「James」和「Joyce」。模板

與其餘標準類型不一樣,pair的數據成員是public。兩個成員分別爲first和second。咱們用普通的成員訪問符號來訪問他們。class

pair上的操做:容器

pair<T1,T2>p;//p是一個pair,兩個類型分別爲T1和T2的成員都進行了值初始化
pair<T1,T2>p(v1,v2);//p是一個成員類型爲T1和T2的pair;first和second成員分別用v1和v2進行呢初始化
pair<T1,T2>p={v1,v2};//等價於p(v1,v2)
make_pair(v1,v2);//返回一個用v1和v2初始化的pair。pair的類型從v1和v2的類型推斷出來。
p1==p2//當first和second成員分別相等時,兩個pair相等。相等性判斷利用元素的==運算符實現。

  

 使用場景:當咱們要對map的values進行排序時能夠先把map中的元素轉化爲pair在一個一個存入vector中,而後就能夠進行排序了。爲何呢?由於pair‘的數據成員是public的,而map的數據成員是private的因此無法直接對map的數據成員進行操做,可是能夠直接對pair的數據成員進行排序。構造函數

相關文章
相關標籤/搜索