C++中的哈希容器unordered_map使用示例

C++中的哈希容器unordered_map使用示例

投稿:junjie 字体:[增加 减小] 类型:转载 时间:2015-06-10 我要评论

这篇文章主要介绍了C++中的哈希容器unordered_map使用示例,本文直接给出实例代码,并讲解了一些hash table的知识,需要的朋友可以参考下

随着C++0x标准的确立,C++的标准库中也终于有了hash table这个东西。

很久以来,STL中都只提供作为存放对应关系的容器,内部通常用红黑树实现,据说原因是二叉平衡树(如红黑树)的各种操作,插入、删除、查找等,都是稳定的时间复杂度,即O(log n);但是对于hash表来说,由于无法避免re-hash所带来的性能问题,即使大多数情况下hash表的性能非常好,但是re-hash所带来的不稳定性在当时是不能容忍的。

不过由于hash表的性能优势,它的使用面还是很广的,于是第三方的类库基本都提供了支持,比如MSVC中的和Boost中的。后来Boost的unordered_map被吸纳进了TR1 (C++ Technical Report 1),然后在C++0x中被最终定了标准。

于是我们现在就可以开心得写以下的代码了:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include
#include
#include
  
int main()
{
  std::unordered_map int > months;
  months[ "january" ] = 31;
  months[ "february" ] = 28;
  months[ "march" ] = 31;
  months[ "april" ] = 30;
  months[ "may" ] = 31;
  months[ "june" ] = 30;
  months[ "july" ] = 31;
  months[ "august" ] = 31;
  months[ "september" ] = 30;
  months[ "october" ] = 31;
  months[ "november" ] = 30;
  months[ "december" ] = 31;
  std::cout << "september -> " << months[ "september" ] << std::endl;
  std::cout << "april   -> " << months[ "april" ] << std::endl;
  std::cout << "december -> " << months[ "december" ] << std::endl;
  std::cout << "february -> " << months[ "february" ] << std::endl;
  return 0;
}

你可能感兴趣的:(C++)