C++ 编译器:“class std::vector<std::vector<char> >”没有名为“emplace_back”的成员

问题描述 投票:0回答:1

在编写 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;
}

这是我的错误:

enter image description here

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

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

感谢您的帮助:)

更新:

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

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

enter image description here

除此之外,请记住在代码中包含

main
函数。否则编译器会报如下错误:

enter image description here

解决方案是由回复我帖子的用户给出的:)

c++ vector
1个回答
20
投票

您的编译器不支持 C++11。

emplace_back
std::vector<T>
成员函数是从 C++11 开始添加的,如你可以看到

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.