9

编码 C++ 时,我从编译器收到错误。这是我的代码:

#include <iostream>     
#include <algorithm>   
#include <typeinfo>
#include <string>
#include <vector>


std::vector< std::vector<char> > p(std::vector<char> v)
{
    std::vector< std::vector<char> > result;

    std::sort(v.begin(), v.end());
    do
    {
        result.emplace_back(v);
    }
    while(std::next_permutation(v.begin(), v.end()));

    return result;
}

这是我的错误:

在此处输入图像描述

知道是什么原因造成的吗?

我正在使用 Codeblocks 12.11、Windows 7,我的编译器是 GNU GCC Compiler

谢谢你的帮助:)

更新:

如果有人遇到同样的问题,这里是解决方案(在 Codeblocks 12.11 中):

转到:设置 --> 编译器 --> 编译器设置 --> 选中以下复选框:

在此处输入图像描述

除此之外,请记住main在您的代码中有一个 -function。否则编译器会报如下错误:

在此处输入图像描述

回答我帖子的用户给出了解决方案:)

4

1 回答 1

19

您的编译器不支持 C++11。如您所见,从 C++11 开始添加的emplace_back成员函数。std::vector<T>

根据您的编译器版本,您可能只需要一些标志来告诉编译器打开 C++11 功能。你可以在 GCC 和 Clang 上这样做:

-std=c++11 -stdlib=libc++

否则,您可能需要将编译器版本更新为较新的版本。

于 2013-11-05T12:48:26.253 回答