unordered_map初用

unordered_map,顾名思义,就是无序map,STL内部实现了Hash
所以使用时可以当做STL的Hash表使用,时间复杂度可做到O(1)查询

在C++11前,使用unordered_map要像这样写:

#include <tr1/unordered_map> //在unordered_map之前加上tr1库名
using namespace std::tr1; //加上命名空间

C++11:

#include <unordered_map>

使用自己定义的结构体要重载"===="

map和unordered_map的比较

map:

  • 优点:

    • 有序性,这是map结构最大的优点,其元素的有序性在很多应用中都会简化很多的操作
    • map底层是以红黑树的数据结构实现的,支持的搜索,插入,删除都是O(logn)的时间复杂度。
  • 缺点:

    • 空间占用率高,因为map内部实现了红黑树,虽然提高了运行效率,但 是因为每一个节点都需要额外保存父节点、孩子节点和红/黑性质,使得每一个节点都占用大量的空间

unordered_map:

  • 优点: 因为内部实现了哈希表,因此其查找速度非常的快
  • 缺点: 哈希表的建立比较耗费时间
  • 适用处:对于查找问题,unordered_map会更加高效一些,因此遇到查找问题,常会考虑一下用unordered_map
posted @ 2019-12-14 14:52  _Ark  阅读(177)  评论(0编辑  收藏  举报