C++ STL Pair
Pair類型概述
pair是一種模板類型,其中包含兩個(gè)數(shù)據(jù)值,兩個(gè)數(shù)據(jù)的類型可以不同,基本的定義如下:
?
pair<int, string> a;
表示a中有兩個(gè)類型,第一個(gè)元素是int型的,第二個(gè)元素是string類型的,如果創(chuàng)建pair的時(shí)候沒有對(duì)其進(jìn)行初始化,則調(diào)用默認(rèn)構(gòu)造函數(shù)對(duì)其初始化。
?
pair<string, string> a("James", "Joy");
也可以像上面一樣在定義的時(shí)候直接對(duì)其初始化。
?
由于pair類型的使用比較繁瑣,因?yàn)槿绻x多個(gè)形同的pair類型的時(shí)候,可以時(shí)候typedef簡(jiǎn)化聲明:
typedef pair<string, string> author;
author pro("May", "Lily");
author joye("James", "Joyce");
?
?
Pair對(duì)象的操作
?
- 對(duì)于pair類,由于它只有兩個(gè)元素,分別名為first和second,因此直接使用普通的點(diǎn)操作符即可訪問(wèn)其成員
pair<string, string> a("Lily", "Poly");?
string name;
name = pair.second;
- 生成新的pair對(duì)象
可以使用make_pair對(duì)已存在的兩個(gè)數(shù)據(jù)構(gòu)造一個(gè)新的pair類型:
int a = 8;
string m = "James";
pair<int, string> newone;
newone = make_pair(a, m);
?
1#include <iostream> 2#include <utility> 3#include <string> 4usingnamespace std; 5 6int main () { 7pair <string,double> product1 ("tomatoes",3.25); 8pair <string,double> product2; 9pair <string,double> product3; 10 11product2.first ="lightbulbs"; // type of first is string 12product2.second =0.99; // type of second is double 13 14product3 = make_pair ("shoes",20.0); 15 16cout <<"The price of "<< product1.first <<" is $"<< product1.second <<"\n"; 17cout <<"The price of "<< product2.first <<" is $"<< product2.second <<"\n"; 18cout <<"The price of "<< product3.first <<" is $"<< product3.second <<"\n"; 19return0; 20} 其運(yùn)行結(jié)果如下: 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 pair object. 03 template 04 pair make_pair(T1 x, T2 y) 05 { 06 ????return pair(x, y); 07 } 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::pair m_pairA; 16 ????????m_pairA = std::make_pair("sn001", 12.5); 17 ????????std::cout<<m_pairA.first<<" ?"<<m_pairA.second<<std::endl; 18 結(jié)合map的簡(jiǎn)單使用: 19 ????????std::pair m_pairA; 20 ????????m_pairA = std::make_pair("sn001", 12.5); 21 ????????//std::cout<<m_pairA.first<<" ?"<<m_pairA.second<<std::endl; 22 ????????std::map m_mapA; 23 ????????m_mapA.insert(m_pairA); 24 ????????std::map::iterator iter = m_mapA.begin(); 25 ????????std::cout<<iter->first<<" ?"<<iter->second<<std::endl; 小結(jié): make_pair創(chuàng)建的是一個(gè)pair對(duì)象。使用都很方便,針對(duì)成對(duì)出現(xiàn)的數(shù)據(jù),如書的ISBN對(duì)應(yīng)一個(gè)書名。 pair是單個(gè)數(shù)據(jù)對(duì)的操作,pair是一struct類型,有兩個(gè)成員變量,通過(guò)first,second來(lái)訪問(wèn),用的是“.”訪問(wèn)。 map是一個(gè)關(guān)聯(lián)容器,里面存放的是鍵值對(duì),容器中每一元素都是pair類型,通過(guò)map的insert()方法來(lái)插入元素(pair類型)。
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀
總結(jié)
以上是生活随笔為你收集整理的C++ STL Pair的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 求一个字符串中连续出现次数最多的子串
- 下一篇: 在数组中找出3个数使得它们和为0