我的代码是:

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有可能吗?

最佳答案

在正确更新迭代器的同时使用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;});

关于c++ - 根据对象属性从列表中删除对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48088869/

10-11 04:30