W poniższym kodzie wykonuję pętlę przez mapę i sprawdzam, czy element musi zostać usunięty. Czy można bezpiecznie wymazać element i kontynuować iterację, czy też muszę zebrać klucze w innym kontenerze i wykonać drugą pętlę, aby wywołać funkcję erase ()?
map<string, SerialdMsg::SerialFunction_t>::iterator pm_it;
for (pm_it = port_map.begin(); pm_it != port_map.end(); pm_it++)
{
if (pm_it->second == delete_this_id) {
port_map.erase(pm_it->first);
}
}
AKTUALIZACJA: Oczywiście przeczytałem wtedy to pytanie, które nie wydawało mi się powiązane, ale odpowiada na moje pytanie.
std::remove_if
nie działa zstd:map