1. 程式人生 > >pair 和make_pair比較,以及在map中的用法

pair 和make_pair比較,以及在map中的用法

Pair和make_pair型別概述

1.pair是一種模板型別,其中包含兩個資料值,兩個資料的型別可以不同.

eg:pair <int,string>a;

表示a中有兩個型別,比如第一個元素可以是int型的,第二個元素是string型別的,如果建立pair的時候沒有對其進行初始化,則呼叫預設建構函式對其初始化。

pair a("James", "Joy");

由於pair型別的使用比較繁瑣,因為如果要定義多個形同的pair型別的時候,可以時候typedef簡化宣告:

typedef pair author;

author pro("May", "Lily");

author joye("James", "Joyce");

Pair物件的操作

於pair類,由於它只有兩個元素,分別名為first和second,因此直接使用普通的點操作符即可訪問其成員pair a("Lily", "Poly");//使用‘.’訪問,賦值。

a.first="liming";

string name;

name = pair.second;

cout<<pair.first<<endl;

2.make_pair型別

可以使用make_pair對已存在的兩個資料構造一個新的pair型別:

eg: pair<string,int>("sn001", 12.5); make_pair("sn001", 12.5); 兩者效果一樣。
倘若:pair<string,int>("sn002", 12.6);// 12.6's datatype is float make_pair("sn002",12.6);// 12.6's datatype is double 4.結合 map 的insert使用。 map <string,int>m; m.insert(pair("aaa",1); m.insert(make_pair("bbb",2); map<string,int>::iterator pt for(pt=m.begin();pt!=m.end();pt++) cout<<m.first<<" "<<m.second<<endl; 小結: make_pair建立的是一個pair物件。使用都很方便,針對成對出現的資料,如書的ISBN對應一個書名。pair是單個數據對的操作,pair是一struct型別,有兩個成員變數,通過first,second來訪問,用的是“.”訪問。
map是一個關聯容器,裡面存放的是鍵值對,容器中每一元素都是pair型別,通過map的insert()方法來插入元素(pair型別)。 程式碼:

#include<iostream>
#include<map>
#include<string>
using namespace std;
int main()
{
map<string,double> m;
m["jack"]=98.3;
m["bake"]=98.9;
m["ke"]=1.3;
//m.erase("ke");


m.insert(pair<string,double>("abb",85.23232));
m.insert(make_pair("acc",80.3));
map<string ,double>::iterator pos;
for(pos=m.begin();pos!=m.end();pos++)
cout<<pos->first<<": "<<pos->second<<endl;
return 0;
}