map的特性是:
所有元素都会根据元素的键值自动被排序,map的所有元素都是pair,同时拥有实值和键值。pair的第一元素被视为键值,第二元素被视为实值。map不允许两个元素拥有相同的键值。
template<class T1,class T2>
struct pair
{
typedef T1 first_type;
typedef T2 scond_type;
T1 forst;
T2 second;
pair() :first(T1()), second(T2()){}
pair(const T1& a, const T2& b) :first(a), second(b){}
};
测试程序
#include<map>
#include<iostream>
#include<string>
using namespace std;
int main()
{
map<string, int> simap;
simap[string("jjhou")] = 1;
simap[string("jerry")] = 2;
simap[string("jason")] = 3;
simap[string("jimmy")] = 4;
pair<string, int> value(string("david"), 5);
simap.insert(value);
map<string, int>::iterator simap_iter = simap.begin();
for (; simap_iter != simap.end(); ++simap_iter)
{
cout << simap_iter->first << ' ' << simap_iter->second << endl;
}
int number = simap[string("jjhou")];
cout << number << endl;
map<string, int>::iterator ite1;
//面对关联式容器,应该使用其所提供的find函数;爱搜寻元素,回避使用STL算法find()更有效率,
ite1 = simap.find(string("mchen"));
if (ite1 == simap.end())
cout << "mchen not found" << endl;
ite1 = simap.find(string("jerry"));
if (ite1 != simap.end())
cout << "jerry found" << endl;
ite1->second = 9;//可以通过map迭代器修改“value”
int number2 = simap[string("jerry")];
cout << number2 << endl;
return 0;
}