C++ 基于对象属性从列表中删除对象

C++ 基于对象属性从列表中删除对象,c++,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

我的代码是:

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
        }
    }
}
我要做的是从列表中删除对象。我已经尝试过删除和擦除,但这种方式似乎不起作用。可以用这个列表吗

在正确更新迭代器的同时使用迭代器和擦除

    for(auto i=rooms.begin();i!=rooms.end();)
    {
        if((*i).ownerFd == ownerFd)
        i=rooms.erase(i);
        else
        i++;
    }
或者更好, 如果需要,可以使用remove_

此作用域中未声明using for I am getting'room'的可能重复项,如果未捕获'ownerFd',则使用remove_
rooms.remove_if([ownerFd](Room i){return i.ownerFd == ownerFd;});