c++ - hash_map 有多普遍?

标签 c++ compiler-construction portability

hash_maphash_set header 尚未包含在 C++ 标准中,但它们可作为我最近使用的所有编译器的扩展使用。

我想知道在不牺牲可移植性的情况下,在实际代码中我可以在多大程度上依赖这些。我正在从事需要在许多架构和编译器上运行的工具项目,包括:

  • Linux(x86_64、AMD/Intel):GCC、Intel、Portland 编译器
  • AIX(强大):GCC、xlC
  • Cray XT 系列 (AMD):GCC、Portland、Pathscale 编译器
  • IBM 蓝色基因系列(电源):xlC、GCC
  • SGI Altix (Itanium): Intel 编译器
  • Windows:不是真正的优先事项,但随时提供有用的答案。

我意识到其中一些非常奇特,但这不是重点。您对跨多个平台和编译器的 STL 扩展有何体验?它们无处不在吗? 会在您的项目中使用它们吗?

最佳答案

我可能会寻找增强等效物并使用它。至少他们有一些来自用户的压力,要求他们独立于平台。我无法想象如果您针对 GCC 和 Intel 编译器提交错误并告诉他们调和他们在 hash_map 实现方式上的分歧会发生什么。充其量你能让他们互相交谈。假设您甚至实现了这一点,那么您只是修复了 Intel 和 GCC 编译器的不同之处。祝大家好运,并在几年内解决问题。

至少有了 boost,您就会知道跨平台的任何差异都由一个组织来解决。

编辑 升压当量显然是 unordered setunordered map . (感谢 Head Geek)

关于c++ - hash_map 有多普遍?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/607836/

相关文章:

c++ - 共享 DLL 中是否可能存在多个单例实例?

c++ - 打印2D动态数组C++函数

c++ - 调试时 has_new_operator.hpp 中的 Boost 错误

c++ - MSVC 对象布局怪癖

c++ - 在c++中,派生对象和基础对象之间有什么区别?

winapi - 不在偏移量 0 处映射 Win32 可移植可执行镜像的可能原因是什么?

DLL 中的 C++ 错误 : name followed by '::' must be a class or namespace name. WindowsForm

使用简写 IF 优化 C++ 编译器

c++ - "boost does it"在多大程度上等同于 "very portable, use it"?

winapi - 在 pre-vista 系统上的 GetThreadId?