![](/img/trans.png)
[英]std::type_info::hash_code() uniqueness and the meaning of “should”
[英]What is the advantage of using std::type_info::hash_code over std::type_index
唯一的區別是一個可以用作索引嗎?
使用其中一種來比較類型的優勢是什么?
唯一的區別是可以用作索引嗎?
使用其中一種比較類型有什么優勢?
std::type_info::hash_code()
是返回std::size_t
的成員 function。 它只是一個數字,您無法從中獲取std::type_info
的name
。
std::type_index
是一種與容器兼容的類型,它也有一個name
成員,引用回它索引的std::type_info
。
與任何 hash 一樣,可能會發生沖突:
返回一個未指定的值,這樣對於引用相同類型的所有
type_info
對象,它們的hash_code()
是相同的。不提供其他保證:引用不同類型的
type_info
對象可能具有相同的hash_code
(盡管標准建議實現盡可能避免這種情況),並且相同類型的hash_code
可以在同一程序的調用之間更改。
(參考)
(最后一句話特別有趣。)
您要使用這兩個函數中的哪一個取決於您要執行的操作。 一般來說, type_index()
就是你要找的。 它唯一標識一個類型。 如果您想要關聯容器的鍵, type_index()
的哈希器實際上是hash_code()
。
我想不出為什么你需要自己使用hash_code()
的原因,除非你出於某種原因試圖避免type_index()
(或者你發現你需要自己指定散列器),盡管鏈接文章有這樣一個實現的例子。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.