簡體   English   中英

Hash function unordered_set 中的結果和桶號

[英]Hash function result and bucket number in unordered_set

假設我有一個std::unordered_set<T> mySet用我自己的 hash function hashFunc(T item)初始化。 我想要做的是首先將一些項目插入mySet ,然后有一個 function search(T item)接受一個項目,找到哪個 bucket b如果要插入(但不插入)它會是 go 最后返回 bucket b上的所有其他項目。 我可以這樣計算b嗎?

b = hashFunc(item)

是否保證b會是我正在尋找的桶? 如果沒有,我有什么選擇?

unordered_set上的bucket方法采用一個鍵並返回具有該鍵的元素將 go 放入的桶索引。 例如:

#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

獲得桶索引后,您將通過調用采用桶索引的beginend重載來迭代該桶中的項目。

您不需要直接撥打您的 hash function。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM