c++ - 如何在 Linux 中启用 C++11

标签 c++ linux c++11

我想在 C++ 中使用 unordered_map STL,但是一旦我使用 header ,它就会给我这个错误:

此文件需要支持 ISO C++11 标准的编译器和库支持。此支持目前处于试验阶段,必须使用 -std=c++11 或 -std=gnu++11 编译器选项启用。

我在下面附上了我想要运行的代码。 (也欢迎对代码进行任何输入。谢谢)

#include <iostream>
#include <unordered_map>
using namespace std;

class Node
{
public:
string a,b;
Node()
{
    a="hello";
    b="world";
}
};


int main ()
{
    unordered_map<Node> mymap;
    Node mynode;
    mymap.insert(mynode);
    std::cout << "myrecipe contains:" << std::endl;
  for (auto& x: mymap)
    std::cout << x.a << ": " << x.b << std::endl;

}

编辑:我使用以下命令让它工作:g++ -std=c++11 [filename].cpp

感谢您的帮助。

最佳答案

问题的主要答案:在编译命令中指定 -std=c++11

具体哪些 C++11 功能可用将取决于您的 GCC 版本。这里有两个链接可能会有所帮助:

关于c++ - 如何在 Linux 中启用 C++11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26954046/

相关文章:

c++ - 检查类型是否为模板特化

c++ - boost::thread 和 std::unique_ptr

c++ - 关于 OpenGL 的问题和将 C 转换为 C++ 的过程

c++ - 如何仅从文件中读取特定字符?

linux - 如何从终端在centos7上安装vlc?

c - 寄存器数据类型变量是否有限?

c++ - 我可以在 C++11 的类外执行继承吗?

c++ - 在 IDE 外运行 .exe 但在 IDE 内使用断点

c++ - 发送具有 std::vector 成员的结构时出现段错误

linux - 如何rehup sshd进程?