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 }
时间: 2024-10-31 09:09:55