#include <boost/unordered_set.hpp>

boost.unordered在C++标准容器std::set,std::multiset,std::map和std::multimap的基础上多实现了四个容器:boost::unordered_set,boost::unordered_multiset,boost::unordered_map和boost::unordered_multimap。那些名字很相似的容器之间并没有什么不同,甚至还提供了相同的接口。在很多情况下,替换这两种容器(std和boost)对你的应用不会造成任何影响。

小结:它里面的库与原有C++标准库中的map、set等相对应,只是内部数据结构改红黑树为hash表来实现,虽然会使得对象的存储空间增大不少,但是查找的平均复杂度却由O(logN)变成O(1),大大提升查找效率。对于需要频繁进行索引查找的应用来说,是极好的选择(当然你还需要考虑效费比,主要是存储空间)。

 1 #include <iostream>
 2 #include <boost/unordered_set.hpp>
 3 
 4 void main()
 5 {
 6     boost::unordered_set<std::string>myhashset;
 7 
 8     myhashset.insert("ABC");
 9     myhashset.insert("DEF");
10     myhashset.insert("GHI");
11 
12     for (auto ib = myhashset.begin(); ib != myhashset.end(); ib++)
13     {
14         std::cout << *ib << std::endl;
15     }
16 
17     std::cout << (myhashset.find("GHI") != myhashset.end()) << std::endl;//如果查找成功,返回1,否则返回0
18 }
原文地址:https://www.cnblogs.com/denggelin/p/5769567.html