我的代码是:
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
吗?
答案 0 :(得分:1)
在正确更新迭代器的同时使用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;});