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

前端技术 2023/09/06 C++

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

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

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

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

#include <iostream>
#include <string>
#include <unordered_map>
 
int main()
{
 std::unordered_map<std::string, 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;
}

本文地址:https://www.stayed.cn/item/17402

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。