STL-map
LDK Lv4

map

存储 key-value,==key唯一==

底层:红黑树。红黑树参考:RBTree

是否有序:有序(key升序)

unordered_map

存储key-value,==key唯一==

底层:哈希表

是否有序:无序

multimap

存储key-value,==key不唯一==(一个key对应多个value)

底层:红黑树。

是否有序:有序(key升序)

unordered_multimap

存储key-vlaue,==key不唯一==(一个key对应多个value)

底层:哈希表

总结:

  • 带有unordered就是哈希表,没有unordered就是红黑树
  • 带有multi就是可重复key

横向对比

有序用树,高速用哈希,重复用multi,唯一用map

特性mapmultimapunordered_mapunordered_multimap
底层结构红黑树(平衡二叉搜索树)红黑树哈希表(Hash Table)哈希表
元素顺序有序(默认升序)有序无序无序
键唯一性唯一可重复唯一可重复
插入/查找时间复杂度O(log n)O(log n)O(1)(平均),O(n)(最坏)O(1)(平均),O(n)(最坏)
内存占用较高(树节点额外信息)较高较低(但需预留哈希桶空间)较低
operator[]支持
适用场景需有序遍历或范围查询需有序且允许键重复高频查找且无需顺序高频插入/删除且允许键重复
由 Hexo 驱动 & 主题 Keep
本站由 提供部署服务
总字数 34.6k 访客数 访问量