[英]C++ <map> vs <unordered_map> vs <tr1/unordered_map> vs <ext/unordered_map>
我正在尋找一個更好的替代std :: map並且遇到帖子標題中提到的類。 有人可以澄清它們之間的差異,不是在性能/ API方面,而是在它們與當前和未來標准相關的方面。
如果可以,請使用std :: unordered_map,因為它是哈希映射實現的最終名稱(如果需要哈希映射)。 其他名稱是存在的,以防您的編譯器提供它們但在一個單獨的命名空間(因為C ++ 0x尚未正式提供)。
順便說一下,還有boost :: unordered_map,但它幾乎都是相同的想法和界面。
<tr1/*>
中的標題是在TR1'draft '中指定的內容。 我相信很多這些可能會進入C ++ 0x(雖然這不能保證,並且存在不兼容的更改的余地)。 根據我的理解, <ext/*>
是非標准的(即特定於供應商的)擴展。 Boost還提供了一個unordered_map ,如果你試圖定位沒有提供你提到的頭文件的編譯器,這可能很方便。
如果你在談論ext / unordered_map,那么這就是舊的SGI / HP STL組件。 它與其他unordered_maps非常相似。 我會使用std :: unordered_map作為標准組件 - 這就是未來。
據我所知,由於某種原因,舊的SGI / HP哈希容器幾乎不會被包含在C ++ 98標准中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.