最坏情况是Unordered_set插入

Unordered_set insertion worst case

本文关键字:set 插入 Unordered 情况 最坏      更新时间:2023-10-16

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

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

struct Hash
{
    size_t operator()(const std::string&) const { return 0; }
};
std::unordered_set<string, Hash> my_set;