簡體   English   中英

使用 std::type_info::hash_code 比 std::type_index 有什么優勢

[英]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_infoname

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM