概绍
关联容器和顺序容器有着根本的不同 : 关联容器中的元素是按关键字来保存和访问的 。与之相对,顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的 。
关联容器支持高效的关键字查找和访问 。
两个主要的关联容器类型是 :
- map
- set
map概绍
map 中 的元素是一些关键字一值 ( key-value )对 : 关键字起到索 引 的作用,值则表示与索引相关联的数据 。
字典则是一个很好的使用 map 的例子, 可以将单词作为关键字,将单词释义作为值 。
set概绍
set 中每个元素只包含一个关键字 : set 支持高效的关键字检查一个给定关键字是否在 set 中 。
例如,在某些文本处理过程中,可以用一个 set 来保存想要忽略的单词。
map & set 的实现
因为需要快速定位到键值的关系, 以红黑树的结构实现,其自平衡特性可以让插入删除等操作都可以在O(log n)时间内完成
map的基本操作函数
| 函数 | 含义 |
|---|---|
| begin() | 返回指向map头部的迭代器 |
| clear() | 删除所有元素 |
| insert() | 插入元素 |
| empty() | 如果map为空则返回true |
| end() | 返回指向map末尾的迭代器 |
| erase() | 删除一个元素 |
| find() | 查找一个元素 |
| lower_bound() | 返回键值>=给定元素的第一个元素的迭代器 |
| upper_bound() | 返回键值>给定元素的第一个元素的迭代器 |
| size() | 返回map中元素的个数 |
| count() | 返回指定元素出现的次数 |
| equal_range() | 返回特殊条目的迭代器对 |
| get_allocator() | 返回map的配置器 |
| key_comp() | 返回比较元素key的函数 |
| max_size() | 返回可以容纳的最大元素个数 |
| rbegin() | 返回一个指向map尾部的逆向迭代器 |
| rend() | 返回一个指向map头部的逆向迭代器 |
| swap() | 交换两个map |
| value_comp() | 返回比较元素value的函数 |
迭代器失效
|