map set 异同
3. 关键特性对比
| 特性 | std::map | std::set |
|---|---|---|
| 元素类型 | <Key, Value> 键值对(二元组) | 单一 Key 类型 |
| 唯一性 | Key 必须唯一;Value 可重复 | Key 必须唯一 |
| 内部实现 | 红黑树(有序) | 红黑树(有序) |
| 常用操作 | insert, erase, find, operator[] | insert, erase, find |
| 遍历顺序 | 按 Key 的升序(默认) | 按 Key 的升序(默认) |
| 空间开销 | 每个节点存储键、值、颜色、指针等 | 每个节点存储键、颜色、指针等 |
| 适用场景 | 需要键值映射、快速查找、顺序遍历 | 需要集合运算(交、并、差)或唯一元素集合 |
注意:
map的operator[]会在键不存在时 默认构造 一个值对象并插入,这在某些场景下可能导致意外的插入。若仅想查询而不插入,请使用find或at(C++11 起提供)。