目录

游戏中的展销系统使用的数据结构

游戏中的展销系统使用的数据结构

1️⃣ std::map

  • 底层结构:红黑树(有序平衡二叉搜索树)。
  • 键值特点:键 有序(默认用 < 比较)。
  • 查找/插入/删除O(log n)
  • 迭代顺序:按键升序遍历。
  • 适合场景:需要按顺序遍历、按区间查找、或经常做 lower_boundupper_bound 的情况。

2️⃣ std::unordered_map

  • 底层结构:哈希表(hash table)。
  • 键值特点:键 无序(存储顺序不可预测)。
  • 查找/插入/删除:平均 O(1),最坏 O(n)(当哈希冲突严重时)。
  • 迭代顺序:不可保证顺序,且随着 rehash 改变。
  • 适合场景:不关心顺序、只追求快速查找的情况。

3️⃣ std::multimap

  • 底层结构:红黑树(与 map 相同)。
  • 键值特点允许相同键map 的 key 必须唯一,multimap 可以重复)。
  • 查找/插入/删除O(log n)
  • 迭代顺序:按键升序遍历(同 map)。
  • 适合场景:需要一个键对应多个值时。

🔎 主要区别总结表

容器底层结构是否有序是否允许重复键查找/插入/删除复杂度迭代顺序适用场景
map红黑树有序O(log n)按键升序需要排序或区间查找
unordered_map哈希表无序平均 O(1)不保证高速查找
multimap红黑树有序O(log n)按键升序一个键多值

应用例子

1、unordered_map做订单容器

2、multimap做时间等索引