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;});