1.关联容器和顺序容器的本质区别在于:关联容器通过键值(KEY)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素.
2.pair类型提供的主要操作:
1).pair<T1,T2>p1 创建一个空的pair的类型
2).pair<T1,T2>p1(v1,v2) 将p1.first=v1,p1.second=v2并创建pair对象
3).make_pair(v1,v2) 创建v1,v2的pair对象
3.在map对象中,键值类型必须定义<操作符,而且操作符能正确的工作.
map<K,V>::key_type 在容器中用作索引的键的类型
map<K,V>::mapped_type 在map容器中,键所关联的值的类型
map<K,V>::value_type 一个pair类型.他的first元素具有const map<K,V>::key_type类型,而second元素则为map<K,V>::map_type类型
4.使用下标访问map与使用下标访问数组或vector的行为截然不同:用下标访问不存在的元素将导致在map容器中添加一个新的元素,他的键即为该下标值,插入元素时,如果该键已经存在,则只是插入失败.
5.map容器提供的insert操作
1).m.insert(e); e是一个在m上的value_type类型的值,如果(e.first)不在m中,则插入一个值为e.second的新元素;如果该键存在,则m保持不变.该函数返回一个pair类型的对象,包含指向键为e.first元素的map迭代器,以及一个bool类型对象,表示是否插入了该元素
2).m.insert(beg,end) beg和end是标记元素范围的迭代器
3).m_insert(iter,e) e是alue_type类型的值
其中:alue_type类型那个可以用make_pair(k,v)来生成
6.不修改map对象的查询操作:
m.count(k) 返回m中k的出现次数(0或者1)
m.find(k) 如果m中存在按k的索引的元素,则返回指向该元素的迭代器,如果不存在,则返回超出末端的迭代器
7.删除对象
m.erase(k) 删除m中键值为k的元素,返回size_type类型的值.表示删除的元素的个数
m.erase(p) 从m中删除迭代器p所指元素,p必须指向m中确实存在的元素,而且不等于m.end(),返回void类型
m.erase(b,e) 删除b-e段的元素
m.erase(k) 删除键值为k的元素
8.set类型:
set不支持下标操作符,而且没有定义mapped_type类型,另外set容器存储的键值也必须唯一,且不能改变
8.multimap:不支持下标运算