Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
散列图有多普遍? 代码> HasyMava和 HasySub 头并没有包含在C++标准中,但是它们可用作为我最近使用的所有编译器的扩展。_C++_Compiler Construction_Portability - Fatal编程技术网

散列图有多普遍? 代码> HasyMava和 HasySub 头并没有包含在C++标准中,但是它们可用作为我最近使用的所有编译器的扩展。

散列图有多普遍? 代码> HasyMava和 HasySub 头并没有包含在C++标准中,但是它们可用作为我最近使用的所有编译器的扩展。,c++,compiler-construction,portability,C++,Compiler Construction,Portability,我想知道,在不牺牲可移植性的情况下,我在实际代码中能依赖这些功能多少。我正在从事需要在一系列体系结构和编译器上运行的工具项目,包括: Linux(x86_64,AMD/Intel):GCC、英特尔、波特兰编译器 AIX(Power):GCC,xlC Cray XT系列(AMD):GCC、波特兰、Pathscale编译器 IBM Blue Gene系列(电源):xlC、GCC SGI Altix(安腾):英特尔编译器 Windows:并非优先考虑的问题,但请随时提供有用的答案 我意识到其中有些

我想知道,在不牺牲可移植性的情况下,我在实际代码中能依赖这些功能多少。我正在从事需要在一系列体系结构和编译器上运行的工具项目,包括:

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

我意识到其中有些东西很有异国情调,但这不是重点。您对跨多个平台和编译器的STL扩展有何经验?它们无处不在吗?你会在你的项目中使用它们吗?

不,如果你是一个足够大的组织/项目,你会自己写。这样,您就可以定制它们,以更好地满足您的需求并解决可移植性问题。EA做到了这一点,他们的“eastl”计划针对所有游戏平台,PC、Mac、XBOX360、Wii、PS2、PS3等。我可能会寻找相应的提升并使用它。至少他们有一些来自用户的压力,要求他们独立于平台。我无法想象如果你对GCC和Intel编译器提出了一个bug,并告诉他们在如何实现hash_映射方面调和他们的分歧,会发生什么。你最多只能让他们互相交谈。假设您甚至实现了这一点,那么您只修复了Intel和GCC编译器的不同之处。祝大家好运,能在几年内把问题解决

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

编辑
助推当量显然是或。(感谢极客头儿)

如果我没有弄错的话,“Boost等价物”是
unordered\u map
unordered\u set
。不过,您需要一个相当新的Boost版本。我相信,它将以这种方式进入下一个标准。简单的回答是:不要使用散列映射,而是使用无序映射或无序集。