1.关联容器通过键key 存储和读取元素。两个基本的关联容器是map和set。
2.
3.set比较适合有效存储不同值的集合,而map适用于存储(或修改)每个键所关联值的情况。
4.
5.创建pair对象时,必须提供两个类型名。
6.对于pair类,可以直接访问其数据成员,其成员都是公有的,分别名为first和second。
7.在迭代遍历关联容器时,按键的顺序访问元素,而与元素在容器中的存放位置完全无关。
8.
9.比较函数在键类型上 严格弱排序。当一个键与自身比较时 返回false结果。
10.对于键 类型,唯一的约束就是必须支持 < 操作符。
11.value_type 是存储元素的键以及值的pair类型, 而且键为 const。即它的值成员可修改,键成员不能修改。
12.用下标访问不存在的元素将导致在map容器中添加一个新的元素,它的键即为该下标值。
13.
14.下标操作符带来的副作用:不必要的初始化。
15.使用make_pair和typedef简化。
16.
17.
18.map容器是键-对的集合;set容器只是单纯的键的集合。
19.set不支持下标操作符,而且没有定义mapped_type类型。
20.set中的键也为const。
21.multimap不支持下标运算。
22.在multimap和multiset容器中,如果某个键对应多个实例,则这些实例在容器中相邻存放。
23.
24.lower_bound返回的迭代器指向该键关联的第一个实例,若该键不在容器中,则lower_bound返回在保持容器元素顺序的前提下该键应被插入的第一个位置。
25.equal_range函数返回存储一对迭代器的pair对象。
26.map<string,int> wordCount;可用作其下标的类型为string和C风格字符串(包括字面值、数组名、指针)。
27.带一个键-值pair形参的insert函数将返回一个pair对象,该对象包含一个迭代器和一个bool值,其中迭代器指向map中具有相应键的元素,而bool值则表示是否插入了该元素。
28.map< string,vector<int> >类型,参数类型为pair< const string,vector<int> >,返回值类型为pair< map< string,vector<int> > ::iterator,bool>。
29.set容器中的元素不能修改。
30.在使用关联容器时,它的键不但有一个类型,而且还有一个相关的比较函数。 所用的比较函数必须在键类型上定义严格弱排序(strict weak ordering)。所谓的严格弱排序可理解为键类型数据上的“小于”关系。当用于一个键与自身的比较时,肯定会导致 false 结果。如果它们相互之间都不存在“小于”关系,则容器将之视为相同的键。用做 map 对象的键时,可使用任意一个键值来访问相应的元素。