map的特性
所有元素都会根据元素的键值自动被排序
map中的pair结构
map的所有元素类型都是pair,同时拥有实值(value)和键值(key)
pair的第一个元素视为键值,第二个元素视为实值
map不允许两个元素拥有相同的键值
下面是stl_pair.h中pair的定义:
//代码摘录与stl_pair.htemplate <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) {}#ifdef __STL_MEMBER_TEMPLATEStemplate <class _U1, class _U2>pair(const pair<_U1, _U2>& __p) : first(__p.first), second(__p.second) {}#endif};
map的迭代器
不可以根据map的迭代器改变节点的键值,但是可以通过map的迭代器改变节点的实值
因此,map iterators既不是一种constant iterators,也不是一种