Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.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
C++ 使用C+中的无序映射需要哪个gcc版本+;11?_C++_C++11_Gcc_Unordered Map - Fatal编程技术网

C++ 使用C+中的无序映射需要哪个gcc版本+;11?

C++ 使用C+中的无序映射需要哪个gcc版本+;11?,c++,c++11,gcc,unordered-map,C++,C++11,Gcc,Unordered Map,我目前在RHEL 5.4上安装了gcc 4.1,但我想使用unordered\u map。我发现,这只是在C++11标准中引入的,因此不可用。另一种选择是使用\uu gnu\u cxx::hash\u map,但我更喜欢使用标准 在另一台开发主机上,我碰巧看到RHEL 6.4和gcc 4.4,它们知道无序映射,但给出了以下警告: …/Cube/C++ +4.4.7/C++ +0xYAdvay.H:31:2:错误:{错误:这个文件需要编译器和库支持,支持即将到来的ISO C++标准C++ 0x。此

我目前在RHEL 5.4上安装了gcc 4.1,但我想使用
unordered\u map
。我发现,这只是在C++11标准中引入的,因此不可用。另一种选择是使用
\uu gnu\u cxx::hash\u map
,但我更喜欢使用标准

在另一台开发主机上,我碰巧看到RHEL 6.4和gcc 4.4,它们知道
无序映射,但给出了以下警告:

…/Cube/C++ +4.4.7/C++ +0xYAdvay.H:31:2:错误:{错误:这个文件需要编译器和库支持,支持即将到来的ISO C++标准C++ 0x。此支持目前处于试验阶段,必须使用-std=c++0x或-std=gnu++0x编译器选项启用

从gcc中,我似乎无法找到哪个gcc版本支持无序映射

[编辑] 为了澄清我的问题: 根据客户的要求,我坚持使用几种操作系统及其版本,因此我不能总是更新到最新的GCC版本并感到高兴。我需要保持我的软件在所有平台上的兼容性

因此,我正在搜索使用
unordered\u map
所需的最低GCC版本。我知道向GCC提供
-std=c++0x
可以修复上述错误,但我不知道“实验性”警告意味着我不应该使用
无序映射

有些人强烈建议不要使用这个实验性的C++11实现


。。。那我该怎么办

在GCC页面上找不到此类信息。有关于GCC的信息,但仅限于当前版本。在GCC4.4中,只需使用
-std=c++0x
标志即可删除警告

如果您害怕实验性的,并且无法更新编译器,请不要使用C++11中的无序_映射。您可以自己编写,使用
tr1
中的一个,或者使用
boost
中的一个,不管怎样

如果您只需查看GCC站点,就会看到以下消息:

重要提示:GCC对C++11的支持仍然是实验性的。一些 功能是根据早期的建议实现的,没有尝试 将使其在更新时保持向后兼容性 以匹配最终的C++11标准

顺便说一句,C++11标准的所有功能都是在GCC中实现的,它实际上是旧标准,因为现在C++14已经获得批准,但支持仍然是过期的

我不知道为什么它仍然是实验性的,例如在clang网站上:

CLAN完全实现了所有发布的ISC++标准,包括 C++11以及即将推出的C++14标准,以及 初创的C++ 1Z标准,被认为是一种生产质量C++ 编译器


而且只有C++1z支持是实验性的。

如果可以,您应该升级到
GCC4.9.2
。否则,请使用gcc 4.4。他们都需要
-std=c++0x
选项。

您是否确实读取了错误?特别是最后关于编译器选项的部分。是的,我确实读过警告,我完全意识到警告会随着提到的选项而消失。然而,一个很自然的问题是,
实验性的
意味着什么,如果我只想使用C++11中的
无序映射
,那么这是否是我关心的问题。对于C++11,没有理由使用GCC4.1。只需获取最新版本即可。决定在我们的各种平台(redhat、solaris、hp ux、aix)上使用/可以使用哪个版本的gcc不是我的事,这取决于我们客户的安装和移植/迁移工作。我知道最新版本当然是最好的选择,但这是不可能的,所以我正在尝试找出无序映射所需的最低版本(我不想要也不需要整个C++11标准),如果有人能帮我回答这个问题,我会非常感激。我投票支持这个问题,因为我遇到了类似的情况,我被某个旧版本的gcc卡住了,每当我想尝试一些C++11特性时,我都会遇到这个错误。“实验性”吓跑了人们。我希望在更新的-std=c++xx尚未完成时,gcc能够不断地、增量地向-std=gnu++xx添加新的语言特性。实际上,对于
4.9.2
,您应该使用
-std=c++11
,而不是
0x
。好吧,那么这个实验与
无序映射相关吗,或者这个类已经完全实现了,我可以使用它并感到快乐吗?@user826955秒。所有对C++11的支持在gcc中仍然是实验性的,但是你可以使用它。请参阅我在原始帖子中的评论