我正在寻找一个更好的替代std :: map并且遇到了帖子标题中提到的类。有人可以澄清它们之间的差异,不是在性能/ API方面,而是在它们与当前和未来标准相关的位置方面。
答案 0 :(得分:10)
如果可以,请使用std :: unordered_map,因为它是哈希映射实现的最终名称(如果需要哈希映射)。其他名称是存在的,以防您的编译器提供它们但在一个单独的命名空间(因为C ++ 0x尚未正式提供)。
顺便提一下,还有boost :: unordered_map,但它几乎都是相同的想法和界面。
答案 1 :(得分:1)
<tr1/*>
中的标题是TR1'草稿'中指定的内容。我相信很多这些可能会进入C ++ 0x(虽然这不能保证,并且存在不兼容的更改的余地)。根据我的理解,<ext/*>
是非标准的(即特定于供应商的)扩展。 Boost还提供unordered_map,如果您尝试定位不提供您提到的标题的编译器,这可能很方便。
答案 2 :(得分:0)
如果您正在谈论ext / unordered_map,那么这是旧的SGI / HP STL组件。它与其他unordered_maps非常相似。我会使用std :: unordered_map作为标准组件 - 这就是未来。
据我所知,由于某些原因,旧的SGI / HP哈希容器几乎不会被包含在C ++ 98标准中。