Skip to content

Latest commit

 

History

History
23 lines (20 loc) · 1.44 KB

set,mutiset,map,mutimap之间都有什么区别?.md

File metadata and controls

23 lines (20 loc) · 1.44 KB
  1. set:
    • 存储唯一键值的集合,即不允许重复的元素。
    • 元素本身就是键值。
    • 元素按照特定顺序存储(默认为递增顺序)。
  2. multiset:
    • 类似于 set,但它允许重复的键值,即可以有多个相等的元素。
    • 元素同样按照特定顺序存储。
  3. map:
    • 存储键值对(pair),每个键值对由一个键和一个值组成。
    • 每个键在 map 中是唯一的,你不能有两个具有相同键的键值对。
    • 键值对按照键的顺序存储。
  4. multimap:
    • 类似于 map,但它允许键不唯一,即可以有多个键值对拥有相同的键。
    • 键值对同样按照键的顺序存储。

使用情况概述:

  • 当你需要存储不重复元素的有序集合时,使用 set
  • 当你需要存储可能重复元素的有序集合时,使用 multiset
  • 当你需要维护一组键到值的映射,并且每个键只能关联一个值时,使用 map
  • 当你需要维护一组键到值的映射,并且一个键可以关联多个值时,使用 multimap

所有这四种类型的底层实现通常是红黑树,除了提供插入、删除和搜索操作外,还保证了元素的有序性。然而,如果你不需要元素的排序,并且关注更高效的插入和查找性能,可以选择使用基于哈希表实现的 unordered_set, unordered_multiset, unordered_map, unordered_multimap 等无序容器。