在嵌套向量中使用remove_if删除元素

时间:2017-05-24 07:40:17

标签: c++

我创建了具有2个属性的类Human:name和age,我想删除类型为Human的嵌套向量中的所有元素,其年龄= = 20,这是我的实现

class Human
{
public:
    string name;
    int age;
    Human(string name,int age):name(name),age(age){}    
    bool isAge20(const Human human) {return human.age == 20;}

    static void removeElement(vector <vector <Human> > vvi)
    {
        vector< vector<Human> >::iterator row;
        vector<Human>::iterator col;
        for (row = vvi.begin(); row != vvi.end(); row++) {
        row->erase( std::remove_if( row->begin(), row->end(), isAge20), row->end());
    }
};

奇怪的是,当我创建这样的嵌套向量并使用它调用removeElement函数时,我收到以下错误:必须使用'。'或' - &gt; '来调用指针成员函数。那可能是什么原因?

1 个答案:

答案 0 :(得分:0)

谓词应该是可调用的(函数/函子),if stMa[i][6] == 0: 是成员函数。你可以使用类似的东西:

isAge20