hash_map 有多普遍?

问题描述 投票:0回答:2

hash_map
hash_set
头文件尚未包含在 C++ 标准中,但它们可以作为我最近使用过的所有编译器的扩展。

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

  • Linux(x86_64、AMD/Intel): GCC、Intel、Portland 编译器
  • AIX(电源): GCC、xlC
  • Cray XT 系列 (AMD): GCC、Portland、Pathscale 编译器
  • IBM Blue Gene系列(动力): xlC、GCC
  • SGI Altix (Itanium): Intel 编译器
  • Windows: 并不是真正的优先事项,但请随意提供有用的答案。

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

c++ hashmap portability
2个回答
13
投票

我可能会寻找等效的升压并使用它。至少他们面临着来自用户的压力,要求他们保持平台独立。我无法想象如果您针对 GCC 和 Intel 编译器提交错误并告诉他们协调 hash_map 实现方式的差异,会发生什么。最好的情况是你能让他们互相交谈。假设您甚至实现了这一点,那么您只是修复了 Intel 和 GCC 编译器的不同之处。祝大家好运,让其他人齐心协力,并在几年内解决问题。

至少通过 boost,您知道跨平台的任何差异都可以由一个组织来解决..

编辑 boost 等价物显然是无序集合无序映射。 (感谢头极客)


5
投票

不,如果您是一个足够大的组织/项目,您可以自己编写。这样您就可以定制它们以更好地满足您的需求并解决可移植性问题。 EA 做到了这一点,他们的“eastl”旨在针对所有游戏平台,PC、Mac、XBOX360、Wii、PS2、PS3 等...

© www.soinside.com 2019 - 2024. All rights reserved.