[C++] 有序容器与无序容器

有序容器与无序容器

  • 对比map和unordered_map
    • 1 包含的头文件不同
    • 2 map的优缺点
    • unordered_map 的优缺点
  • STL参考

有序容器 map/multimapset/multiset 内部采用红黑树实现,插入元素时自动排序,可采用中序遍历从小到大遍历元素。

C++11 增加了无序容器 unordered_map/unordered_multimapunordered_set/unordered_multiset。内部采用散列表存储数据,通过Hash函数实现元素的快速操作,同时元素的存储是无序的。

对比map和unordered_map

1 包含的头文件不同

map:

#include < map >

unordered_map:

#include < unordered_map >

2 map的优缺点

优点:

  • 有序性,适用于对数据顺序有要求的场合;
  • 整体效率很高,红黑树基本可以在O(logn)的时间复杂度完成绝大多数操作;

缺点:

  • 红黑树的结构导致其空间占用率必然会高一些;

unordered_map 的优缺点

优点:

  • 利用hash表实现O(1)时间复杂度的查询操作,效率非常高;<

你可能感兴趣的:(C++,c++,容器,开发语言)