hash_map无处不在?

时间:2009-03-03 19:45:50

标签: c++ compiler-construction portability

{+ 1}}和hash_map标题尚未包含在C ++标准中,但它们可以作为我最近使用过的所有编译器的扩展名。

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

  • Linux(x86_64,AMD / Intel): GCC,英特尔,波特兰编译器
  • AIX(Power): GCC,xlC
  • Cray XT系列(AMD): GCC,Portland,Pathscale Compilers
  • IBM Blue Gene系列(电源): xlC,GCC
  • SGI Altix(安腾):英特尔编译器
  • Windows:并非真正优先考虑,但随时提供有用的答案。

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

2 个答案:

答案 0 :(得分:13)

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

至少在提升时,你知道一个组织正在制定各种平台之间的差异。

修改 提升等值显然是unordered setunordered map。 (感谢Head Geek)

答案 1 :(得分:5)

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