Was passiert, wenn Sie während eines Iterationsvorgangs von Anfang bis Ende auf ein Kartenelement löschen () aufrufen?

In der folgende code, den ich in einer Schleife durch eine Karte und testen, ob ein element gelöscht werden muss,. Ist es sicher zu löschen Sie das element und halten Durchlaufen oder muss ich die sammeln Sie die Schlüssel in einem anderen Behälter, und eine zweite Schleife zum aufrufen der löschen()?

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: natürlich habe ich dann Lesen Sie diese Frage was ich nicht glaube, wäre im Zusammenhang, aber beantwortet meine Frage.

InformationsquelleAutor der Frage MattSmith | 2008-11-05

Schreibe einen Kommentar