Boost - unordered_set 教程/示例/任何东西?

10

我想在项目中使用unordered_set

然而,它的文档要么不完整,要么只是技术参考,没有示例。

有没有人可以提供处理它的在线资源链接? 书籍也受欢迎,最好是免费的。 谷歌搜索没有返回任何有价值的结果。

谢谢!

4个回答

10

最常见用例的代码:

#include <boost/unordered_set.hpp>
using boost::unordered_set;
using std::string;
using std::cout;
using std::endl;

int main (void)
{   
    // Initialize set
    unordered_set<string> s;
    s.insert("red");
    s.insert("green");
    s.insert("blue");

    // Search for membership
    if(s.find("red") != s.end())
        cout << "found red" << endl;
    if(s.find("purple") != s.end())
        cout << "found purple" << endl;
    if(s.find("blue") != s.end())
        cout << "found blue" << endl;

    return 0;
}

输出

found red
found blue

更多信息

http://www.cplusplus.com/reference/unordered_set/unordered_set/find/


7
由于它需要哈希和相等函数而不是比较函数,因此它的行为与 std::set 完全相同,因此关于它的文档很少。只需查找 std::set 的示例,然后将其替换为 std::unordered_set 即可。
如果您需要编写哈希函数,可以在文档中找到示例,例如 这个

它的接口可能非常类似于std::set,但其行为是不同的。除了哈希使其更快的方式之外,Boost的unordered_set还有可能变慢的方式,例如:https://svn.boost.org/trac/boost/ticket/3693 - John Zwinck
@John:它的性能特征不同,无法按顺序迭代(嗯,它被称为“unordered_set”)。否则,它的行为与std::set完全相同。 - Billy ONeal
擦除性能问题已经得到解决: 来自boost 1.61_0的引用: 注: 在旧版本中,这可能是低效的,因为它必须搜索多个桶来查找返回迭代器的位置。数据结构已被更改,所以不再是这种情况,并且已废弃替代删除方法。 - Sid

4

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接