C 中的pair,make pair學習

2021-08-02 19:20:25 字數 1809 閱讀 8534

std::pair主要的作用是將兩個資料組合成乙個資料,兩個資料可以是同一型別或者不同型別。例如std::pair或者std::pair等。pair實質上是乙個結構體,其主要的兩個成員變數是first和second,這兩個變數可以直接使用。初始化乙個pair可以使用建構函式,也可以使用std::make_pair函式,make_pair函式的定義如下:

template pair make_pair(t1 a, t2 b)

一般make_pair都使用在需要pair做引數的位置,可以直接呼叫make_pair生成pair物件。另乙個使用的方面就是pair可以接受隱式的型別轉換,這樣可以獲得更高的靈活度。但是這樣會出現如下問題:例如有如下兩個定義:

std::pair(1, 1.1);

std::make_pair(1, 1.1);

其中第乙個的second變數是float型別,而make_pair函式會將second變數都轉換成double型別。這個問題在程式設計是需要引起注意。下面是一段pair與make_pair的例子程式:

1#include

2#include

3#include

4usingnamespace std;

56int main ()

其執行結果如下:

1the price of tomatoes is$3.25

2the price of lightbulbs is$0.99

3the price of shoes is $20

01 pair  vs make_pair

02 make_pair constructs a pairobject.

03 template

04 pair make_pair(t1 x, t2y)

05 08

09 eg:  std::pair("sn001",12.5);

10  

std::make_pair("sn001",12.5);

11  

兩者效果一樣。

12 倘若:std::pair("sn002", 12.6);  // 12.6's datatype is float

13  

std::make_pair("sn002",12.6); // 12.6's datatype is double

14 使用:

15  

std::pairm_paira;

16  

m_paira =std::make_pair("sn001", 12.5);

17  

std::cout<"<

18 結合map的簡單使用:

19  

std::pairm_paira;

20  

m_paira =std::make_pair("sn001", 12.5);

21  

//std::cout<"<

22  

std::mapm_mapa;

23  

m_mapa.insert(m_paira);

24  

std::map::iterator iter =m_mapa.begin();

25  

std::cout小結:make_pair建立的是乙個pair物件。使用都很方便,針對成對出現的資料,如書的isbn對應乙個書名。

pair是單個資料對的操作,pair是一struct型別,有兩個成員變數,通過first,second來訪問,用的是「.」訪問。

map是乙個關聯容器,裡面存放的是鍵值對,容器中每一元素都是pair型別,通過map的insert()方法來插入元素(pair型別)。

C 中的pair,make pair學習

std pair主要的作用是將兩個資料組合成乙個資料,兩個資料可以是同一型別或者不同型別。例如std pair或者std pair等。pair實質上是乙個結構體,其主要的兩個成員變數是first和second,這兩個變數可以直接使用。初始化乙個pair可以使用建構函式,也可以使用std make p...

C 中的long與C 中的long

微軟很厲害,c 是非常優秀的計算機語言,c 比c 還厲害,c c 本身不就包含四個 號嗎?而微軟發明了c c 中的long比c 中的long要long兩倍!不信你看 我正在使用.net寫乙個預約排隊的程式,因為一前通過vc編寫了乙個用於顯示登記資訊的控制項,現在使用c 重新預約程式,則必然要呼叫vc...

c中的const與c 中的const

c中的const是乙個偽唯讀識別符號。include include int main 此時輸出a的值為20,被指標間接的改變了。c 中,const進行了增強,不在是乙個偽識別符號了。const int a 10 int p int a p 20 cout a p endl cout a endl ...