unordered_set 中的哈希函数结果和桶号

Hash function result and bucket number in unordered_set

假设我有一个 std::unordered_set<T> mySet 使用我自己的散列函数 hashFunc(T item) 初始化。我想要做的是首先将一些项目插入 mySet,然后有一个函数 search(T item) 接受一个项目,找到如果要插入它会去哪个桶 b (但不插入它) 最后 returns 存储桶 b 上的所有其他项目。我可以这样计算b吗?

b = hashFunc(item)

是否保证 b 就是我要找的桶?如果没有,我有什么选择?

unordered_set 上的 bucket 方法接受一个键和 returns 具有该键的元素将进入的桶索引。例如:

#include <iostream>
#include <string>
#include <unordered_set>

int main() {
  std::unordered_set<std::string> x = {"foo", "bar", "baz"};

  std::cout << "foo: " << x.bucket("foo") << "\n";
  std::cout << "fox: " << x.bucket("fox") << "\n";
  std::cout << "bat: " << x.bucket("bat") << "\n";
}

在我的实施中,打印

foo: 2
fox: 0
bat: 1

获得存储桶索引后,您将通过调用采用存储桶索引的 begin, end 重载来迭代该存储桶中的项目。

您不需要直接调用哈希函数。