Dalam kode berikut ini saya loop melalui peta dan menguji apakah suatu elemen perlu dihapus. Apakah aman untuk menghapus elemen dan tetap mengulanginya atau apakah saya perlu mengumpulkan kunci di wadah lain dan melakukan putaran kedua untuk memanggil penghapusan ()?
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);
}
}
UPDATE: Tentu saja, saya kemudian membaca pertanyaan ini yang saya pikir tidak akan terkait tetapi menjawab pertanyaan saya.
std::remove_if
tidak bekerja denganstd:map