Back to Blog

map set 异同


3. 关键特性对比

特性std::mapstd::set
元素类型<Key, Value> 键值对(二元组)单一 Key 类型
唯一性Key 必须唯一;Value 可重复Key 必须唯一
内部实现红黑树(有序)红黑树(有序)
常用操作insert, erase, find, operator[]insert, erase, find
遍历顺序Key 的升序(默认)Key 的升序(默认)
空间开销每个节点存储键、值、颜色、指针等每个节点存储键、颜色、指针等
适用场景需要键值映射、快速查找、顺序遍历需要集合运算(交、并、差)或唯一元素集合

注意mapoperator[] 会在键不存在时 默认构造 一个值对象并插入,这在某些场景下可能导致意外的插入。若仅想查询而不插入,请使用 findat(C++11 起提供)。


4. 常见操作示例

4.1 插入与访问