4

和头文件hash_maphash_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):英特尔编译器
  • Windows:不是真正的优先事项,但随时提供有用的答案。

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

4

2 回答 2

13

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

至少通过提升,您知道一个组织正在解决跨平台的任何差异..

编辑 boost 等价物显然是unordered setunordered map。(感谢头极客)

于 2009-03-03T19:53:16.150 回答
5

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

于 2009-03-03T19:50:42.177 回答