我的代码是:
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
}
}
}
我想做的是从列表中删除对象。我已经尝试使用
remove
和erase
了,但这似乎无法通过这种方式工作。 list
有可能吗? 最佳答案
在正确更新迭代器的同时使用iterator
和erase
。
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/