目录
这里只说几个要点。
1.头文件
#include <map>
#include <set>
2.set和multiset的区别
set | multiset |
只能插入不重复的key | 可以插入重复的key |
一串包含重复的string插入之后,自动去重 | 树上允许存储相同的值 |
用erase删除查找的指定key,只删确定的这个 | 删除所有值相同的key |
共同点:
- 不支持插入有序对
- 不支持随机访问
- 都是关联式容器
- 底层是搜索二叉树(红黑树)
3.set和map的区别
set | map |
只能存一个key值,插入返回值是迭代器和bool值 | 可以存一对有序对,插入的类型是pair,pair是一个类,包含两个成员,(一般把第一个叫key,第二个叫value)都是模板。支持无参构造,支持两个类模板的构造,支持const的构造。 |
不支持[]运算符重载 | 支持[]运算符重载,可以通过[]查找指定的key |
不能修改key | 不能修改key,可以修改value |
不允许重复 | 不允许key重复,但value可以重复 |
共同点:
- 都是关联式容器。
4.加了multi的区别
multiset和mutimap相比set和map的区别在于,允许key重复。
map和set的使用必须要在写代码中熟练。