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

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

  • Linux(x86_64、AMD/英特尔): GCC、英特尔、波特兰编译器
  • AIX(电源): 海湾合作委员会、xlC
  • Cray XT 系列 (AMD): GCC、Portland、Pathscale 编译器
  • IBM 蓝色基因系列(动力): xlC、海湾合作委员会
  • SGI Altix(安腾): 英特尔编译器
  • 视窗: 并不是真正的优先事项,但请随意提供有用的答案。

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

有帮助吗?

解决方案

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

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

编辑升压等效显然是 无序集 或者 无序映射. 。(感谢头极客)

其他提示

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top