Список итераторов несовместим со стиранием - PullRequest
0 голосов
/ 25 апреля 2020

Вот мой код:

std::list<User>::iterator it;
    while (it != allUsers.end())
    {
        if (it->getId() == userId)
        {
            allUsers.remove(*it);
            return *it;
        }
        else
        {
            it++;
        }
    }

Ошибка, которую я получаю: список итераторов несовместим со стиранием Почему?

1 Ответ

2 голосов
/ 25 апреля 2020

Вы должны использовать erase(), а не remove(), чтобы удалить элемент из списка с помощью итератора:

while (it != allUsers.end()) {
    if (it->getId() == userId) {
        auto oldvalue = *it;
        allUsers.erase(it);
        return oldvalue;
    }
    it++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...