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 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/

相关文章:

c++ - 需要帮助在同一行上打印一个没有空格的序列

c++ - 为什么必须在线程销毁之前调用 join() 或 detach() ?

c++ - 多线程 galib247 遗传算法卡在局部最大值

c++ - 标准复制问题

c++ - unique_ptr 链表插入 - 与 operator= 不匹配

c++ - 在 C+ +'s ` extern "C"` block 中使用 c99

c++ - 为 win32 线程使用不同的静态库内存

c++ - 如果存在可以匹配另一个重载函数的函数模板,将调用哪个函数?

c++ - wxWidgets 大量 undefined reference

c++ - 模板类 : Check if complex at compile time