矢量擦除 - 删除成语编译错误

时间:2015-05-29 13:59:06

标签: c++ c++11 vector

我有以下removeOneParam(Parameter* param)代码来自answer

class A
    {
        private:
          std::vector<Parameter*> params;
        public:
          void removeOneParam(Parameter* param)
          {
            params.erase(std::remove(params.begin(), params.end(), param), params.end());
          }
}

但是我得到以下编译错误:

error: cannot convert ‘std::vector<Parameter*>::iterator {aka __gnu_cxx::__normal_iterator<Parameter**, std::vector<Parameter*> >}’ to ‘const char*’ for argument ‘1’ to ‘int remove(const char*)

我如何将这个答案用于我的案例?

3 个答案:

答案 0 :(得分:2)

您的编译器在std::remove标题中选择了cstdio的版本,而不是您想要的版本。您可能遗漏了#include <algorithm>

答案 1 :(得分:1)

在我看来,标题algorithm不包括在内。尝试

#include <algorithm>

然后一切都应该正常。

答案 2 :(得分:0)

尝试在程序的顶部添加include <algorithm>

这应该会使错误消失。