根据对象属性从列表中删除对象

时间:2018-01-04 04:54:16

标签: c++

我的代码是:

class Room {
public:
    int id;
    string name;
    int ownerFd;

    Room(int id, string name, int ownerFd)
    {
        this->id = id;
        this->name = name;
        this->ownerFd = ownerFd;
    }
};

void RemoveUserRooms(int ownerFd) {
    for(auto& room : rooms) {
        if (room.ownerFd == ownerFd) {
            //remove room from list
        }
    }
}

我想要做的是从列表中删除对象。我已尝试使用removeerase,但这似乎不会以这种方式运作。可以使用list吗?

1 个答案:

答案 0 :(得分:1)

在正确更新迭代器的同时使用iteratorerase

    for(auto i=rooms.begin();i!=rooms.end();)
    {
        if((*i).ownerFd == ownerFd)
        i=rooms.erase(i);
        else
        i++;
    }

或更好, 你可以使用remove_if

rooms.remove_if([ownerFd](Room i){return i.ownerFd == ownerFd;});