map容器为关联式容器,有如下特点:
1,其基本单位(节点)为pair类型,就是必须有实值(value)和键值。pair的第一元素为键值(通过.first 或->first访问),第二元素为实值(通过.second 或者->second访问)
2,map不容许有相同的键值
3,map中的所有元素(value)都根据键值(key)被自动排序。
4,键值不可以被修改
其中pair的定义如下:
template<class T1, class T2>
struct pair{
typedef T1 first_type;
typedef T2 second_type;
T1 first;
T2 second;
pair():first(T1()),second(T2()){}
pair(const T1& a,const T2& b): first(a),second(b){}
};
示例:
#include <map>
#include <iostream>
using namespace std;
int main()
{
map<string ,int> simap;
simap[string("wang")] = 1;
simap[string("deng")] = 2;
pair<string,int> value(string("fu"),5);
simap.insert(value);
map<string,int>::iterator iter=simap.begin();
for(;iter!=simap.end();iter++)
{
cout<<iter->first<<' '
<<iter->second<<endl;
}
int number = simap[string("wang")]; //由于重载后的[] 返回的是一个引用,所以simap[string("wang")]既可以
simap[string("wang")] = 10; //作为左值,又可以作为右值,注意要作为左值必须为引用
iter= simap.find(string("wang"));
cout<<"wang=" <<iter->second<<endl;//10
return 0;
}