Unordered_set插入最坏的情况

时间:2015-06-08 09:45:07

标签: c++ hash unordered-set

我有一个关于在unordered_set中插入的问题。我想建立一个最坏情况插入的例子。我有30000个字符串(len字符串< = 16,可能的字符是英文字母大写或小写,符号" _")。所以我有53 ^ 16个单词,我必须选择30000字符串来构建最坏情况插入。我知道unordered_set使用std :: hash进行散列,我试图用len = 3来整理单词,然后计算它们的散列值。我知道,每个哈希都是不同的,所以我不能用len = 3构建单词,使用相同的哈希来构建最坏情况的插入示例?那我该怎么办?

1 个答案:

答案 0 :(得分:3)

std::hash实现各不相同 - 标准允许编译器供应商做他们认为合理的事情。因此,通过在实例化unordered_set时指定自己的哈希例程来最简单地获得最坏情况的行为:它可以为所有输入值返回相同的值(例如0)。

struct Hash
{
    size_t operator()(const std::string&) const { return 0; }
};

std::unordered_set<string, Hash> my_set;