对于标准库容器,最简单的,性能较差的哈希类是什么?

问题描述 投票:0回答:1

在可以忽略性能的情况下,某些标准库容器对于大多数类型仍然需要自定义哈希类。假设我在某处定义了类型SomeType,我想使用std::unordered_set,并且我不在乎性能。我必须写的最低要求是这样的:

template<typename T>
struct Hash42 {
  size_t operator()(T const& e) {return 42;}
};

std::unordered_set<SomeType, Hash42<SomeType>> s;

是否有较短的版本?是否在某处定义了通用哈希类?

c++ hash std
1个回答
0
投票

您可以使运算符本身成为模板而不是类,从而允许推导type参数:

struct Hash0 {
  std::size_t operator()(auto const& e) {return 0;}
};

std::unordered_set<SomeType, Hash0> s;

当然,只有当他们的目标是使程序变慢时,才应使用此方法。

© www.soinside.com 2019 - 2024. All rights reserved.