[英]hash_value function in C++11
Boost庫提供了一個方便函數hash_value
,它基本上只調用:
return hash<T>()(key);
據我所知,C ++ 11包含std::hash
,它與boost::hash
非常相似,但不包括std::hash_value
。 這需要應用程序代碼創建一個hash
對象並調用它的operator()
而不是只調用一個方便的函數。 有沒有什么理由說std::hash_value
沒有標准化?
std::hash<T>
函數的主要用途是用於從std::unordered_*
容器組中的鍵獲取哈希值的對象。 這些將始終包含和使用相應的對象,可能使用空基本優化來避免占用任何內存。 在任何情況下,只要使用std::hash<T>
類型,實際上就是一個對象。
雖然功能對象可以單獨使用,但可能很少見。 此外,對於其他類似的現有函數對象,沒有相應的便捷調用函數:雖然它們中的大多數都是運算符的包裝器,但是特別是std::less<void*>
可能很有趣,因為你不能使用ptr1 < ptr2
來獨立調用ptr1 < ptr2
(至少,如果ptr1
和ptr2
不屬於同一個數組對象,則無法在C ++ 03中使用)。 也就是說,沒有合適的優先權。
最后,我猜想方便功能根本不是提案的一部分:如果沒有提出並且沒有真正好的案例,那么C ++標准中就不會包含任何內容。 從它的外觀來看, n1456似乎至少是“哈希表”提案的一個修訂版,它不包括std::hash_value<T>()
的痕跡。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.