在编写 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 编译器
感谢您的帮助:)
更新:
如果有人遇到同样的问题,这里是解决方案(在 Codeblocks 12.11 中):
转到:设置 --> 编译器 --> 编译器设置 --> 选中以下复选框:
除此之外,请记住在代码中包含
main
函数。否则编译器会报如下错误:
解决方案是由回复我帖子的用户给出的:)
您的编译器不支持 C++11。
emplace_back
的 std::vector<T>
成员函数是从 C++11 开始添加的,如你可以看到。
根据您的编译器版本,您可能只需要一些标志来告诉编译器打开 C++11 功能。您可以在 GCC 和 Clang 上执行此操作:
-std=c++11 -stdlib=libc++
否则,您可能需要将编译器版本更新到更新的版本。