[英]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
獲得桶索引后,您將通過調用采用桶索引的begin和end重載來迭代該桶中的項目。
您不需要直接撥打您的 hash function。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.