我如何尋找一個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. 按值簡單哈希搜索
- 6. 通過哈希列表搜索的最快方法
- 7. Solr搜索「哈希符號」
- 8. 搜索哈希mysql列
- 9. .Net圖書館用於通過哈希進行圖像搜索?
- 10. 通過思考sphinx搜索哈希標記
- 11. 搜索文件和生成MD5哈希值
- 12. mongodb的:搜索哈希的陣列
- 13. 過濾通過謂語
- 14. 搜索在Redis的哈希鍵
- 15. Java的哈希表搜索功能
- 16. 搜索一個完整的哈希表
- 17. 在C++中聲明unordered_set的哈希函數?
- 18. unordered_set from std
- 19. angular2和iter通過哈希陣列
- 20. 通過哈希在.net和jQuery
- 21. 哈希成語在Ruby中的哈希值?
- 22. 建立一個新的哈希值,通過迭代一個嵌套的哈希
- 23. 將哈希數組轉換爲散列哈希,通過哈希的屬性進行索引
- 24. 紅寶石排序哈希通過內部哈希計數相同的值
- 25. 搜索一個哈希映射
- 26. DynamoDB:搜索哈希鍵或範圍鍵
- 27. ASP.NET(MVC) - 向下搜索哈希
- 28. 搜索在ConvertFrom-StringData是哈希
- 29. 在哈希表中搜索幫助!
- 30. 推特:哈希標籤搜索查詢
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