【发布时间】:2011-05-29 12:31:33
【问题描述】:
我目前正在寻找一个更好的替代 std::map 的方法,并且遇到了帖子标题中提到的类。有人可以澄清它们之间的区别,不是在性能/API 方面,而是在它们与当前和未来标准相关的位置方面。
【问题讨论】:
标签: c++ c++11 tr1 unordered-map
我目前正在寻找一个更好的替代 std::map 的方法,并且遇到了帖子标题中提到的类。有人可以澄清它们之间的区别,不是在性能/API 方面,而是在它们与当前和未来标准相关的位置方面。
【问题讨论】:
标签: c++ c++11 tr1 unordered-map
如果可以,请使用 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 标准。
【讨论】: