最坏情况是Unordered_set插入
Unordered_set insertion worst case
我有一个关于在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;
相关文章:
- 插入 std::set 作为 std::map 的键
- 如何将标准::矢量插入具有自定义排序功能的 std::set 中
- 如何在一对集合的向量中插入元素?vector<pair<int,set<string>>>
- 新元素将在std :: set中插入哪里
- 将排序范围插入 std::set 并带有提示
- 无法将 std::set 中的元素迭代器插入到 std::list
- 插入后使用 set::begin() 迭代器
- C++ std::map 或 std::set - 有效地插入重复项
- 排序 std::set 使用 operator() 对插入进行排序
- 在 std::set 中插入对不一致(无法识别 <pair>.second)
- 插入 Set C++ 时出错
- set<>类,当我插入类时,它不接受我的<运算符
- 拆分 std::string 并插入到 std::set 中
- 为什么编译器说我不能将项插入到 std::set 中<Item>?
- 插入适用于 set,但不适用于 unordered_set
- map/set :: 插入是否提供了正确的迭代器提示,它的复杂性是多少?
- 如何在std::set中为插入唯一元素提供比较功能
- 如何在map容器中插入set容器的值
- 为什么我的对象没有插入到std::set中
- 检测插入std::set中的坏项