我如何尋找一個std :: unordered_set知道散列值和有一些謂詞對象? (通過pred(x) && pred(y)
確定等價關係的謂詞x == y
。)搜索的std ::通過哈希值unordered_set和謂語
回答
那麼,您可以忽略散列值並重複測試謂詞的整個unsorted_set
。不是理想的效率,因爲你更願意只迭代一個桶,但它會按照你的要求。
標準unordered_set
具有接口begin(size_t)
以獲取特定桶(數均)的迭代器,和接口bucket_count()
得到桶的數量。
對象與給定的哈希值,保證所有出現在同一個桶,所以迭代剷鬥測試謂詞夠你想要做什麼。
我不能真正看到的任何標準,以保證正確的桶迭代是hash_value % bucket_count()
。有一個函數來獲取桶給定對象,而不是獲得桶對於給定哈希值。儘管如此,請嘗試一下:我認爲這是一個合理的猜測,我可能只是未能找到標準中的關鍵限制。
總之,我覺得你想要的東西,如:
size_t bucket = hash_value % myset.bucket_count();
find_if(myset.begin(bucket), myset.end(bucket), pred);
,但我不知道。
我想過這個問題,但沒有我發現保證桶'HASH_VALUE%myset.bucket_count();'。 – 2010-10-13 16:55:44
恥辱。也許你需要使用hash_value - > object的multimap,而不是unordered_set。我想知道是否有人接近TR1和/或C++ 0x設計過程寫了這個。 – 2010-10-13 18:51:21
我使用'unordered_map',但我相信它不是很好,因爲它基本上是我查找不映射(不提及使用哈希對象兩次)的對象集。 – 2010-10-16 11:21:11
- 1. C++ 11 unordered_set與std :: owner_less-like哈希
- 2. 搜索哈希
- 3. 哈希表中的搜索哈希
- 4. 通過哈希搜索,如果值爲零刪除它
- 5. Redis通配符搜索和返回哈希值(%字)
- 6. unordered_set使用值對象的地址的哈希值
- 7. 搜索紅寶石哈希值爲空
- 8. 按值簡單哈希搜索
- 9. 通過哈希列表搜索的最快方法
- 10. 乾淨的方式通過哈希鍵搜索在Ruby中
- 11. 檢索哈希值在哈希
- 12. Linux哈希命令搜索
- 13. 搜索哈希mysql列
- 14. Solr搜索「哈希符號」
- 15. C#哈希表搜索
- 16. 如何搜索哈希表?
- 17. 哈希表(搜索功能)
- 18. REDIS哈希計數和搜索HMSET
- 19. 通過思考sphinx搜索哈希標記
- 20. .Net圖書館用於通過哈希進行圖像搜索?
- 21. Rails的Haml的 - 通過索引聯接哈希值
- 22. 通過迭代分配哈希值ruby
- 23. 搜索文件和生成MD5哈希值
- 24. 遞歸搜索與哈希值的列表中的值
- 25. mongodb的:搜索哈希的陣列
- 26. 如何通過Ruby中的數組存儲和檢索哈希
- 27. 過濾通過謂語
- 28. unordered_set from std
- 29. 搜索在Redis的哈希鍵
- 30. Java的哈希表搜索功能
pred(x)&& pred(y)等價於x == y。這意味着至多存在一個pred(x)可能存在的不同對象:)也許你有一個錯字? – 2010-10-13 12:13:54
不,這意味着,至多存在一個給定類型的對象,謂詞對它是真實的:)。夥計們,我們已經找到了Singleton的數學公式:D – 2010-10-13 12:24:49
是不是說只要2個對象滿足謂詞它們是相等的(由運算符'=='定義)?像在C++中一樣閱讀'=='而不是數學(儘管'=='是等價關係BTW)。 – 2010-10-13 13:11:27