1.1 STL map
1.1.1 背景
关联容器使用键(key)来存储访问读取元素,而顺序容器则通过元素在容器中的位置存储和访问元素。
常见的顺序容器有:vector、list、deque、stack、queue、priority_queue。
常见的关联容器:map、set、multimap、multiset
1.1.2 提前知识
标准库定义简单的数据对类型pair,有如下接口:
该接口在头文件 utility.h
pair提供的操作 |
|
pair <T1,T2> p1; |
创建一个空的pair对象,其两个元素的类型分别是T1,T2 |
pair <T1,T2>p1(v1,v2); |
创建一个pair对象,其第一个元素的值为v1,第二个元素的值是v2
|
make_pair(v1,v2); |
创建一个pair对象 |
p1<p2 |
如果p1.first<p2.first |
p1==p2 |
如果p1.first == p2.first && p1.second == p2.second 返回true |
p.first |
p的第一个元素 |
p.second |
p的第二个元素 |
map 对象的定义
map的构造函数 |
|
map<k,v> m; |
创建空的map对象 |
map<k,v> m(m2); |
创建m2的副本m |
map<k,v> m(b,e); |
创建map类型的对象m,存储迭代器b和e标记的所有元素的副本。(范围??) |
map对象的第一个元素的类是是有所限制的,必须支持比较函数,。
map类定义的类型
|
|
map<k,v>::key_type |
在map容器中作为索引的键的类型 |
map<k,v>::mapped_type |
在map对象中作为被索引值的数据类型 |
map<k,v>::value_type |
一个pair类型,由前两者组成的一个pair对象,它的first元素具有const map<k,v>::key_type 类型,而second元素则为map<k,v>::mapped_type 类型 |
map支持的操作
增加删除查询
m.insert(e)
m.count(k)
m.find(k)
m.erase(k)