Ich versuche, eine Funktion zu schreiben, die ein Vektorelement aus listAccounts in Abhängigkeit von dem account_name dieses Vektorelements entfernt. Ich habe dies geschrieben:Entfernen eines Vektorelements vom Objekttyp mit einem Iterator C++
void Account::remove_account(string name) {
auto iter = listAccounts.begin();
for (; iter != listAccounts.end(); iter++) {
if ((*iter).account_name == name) {
listAccounts.erase(iter);
}
}
}
Aber ich einen Segmentation fault aus der Vektor Entfernung bekommen, von dem, was ich verstehe, es bedeutet, dass ich versuchte, auf Speicher zuzugreifen, die ich habe keinen Zugang zu, aber ich bin nicht sicher, wie man das richtig schreibt.
Möchten Sie nur ein Element oder alle Elemente mit dem angegebenen Wert entfernen? –
Das Duplikat erklärt, dass Ihre For-Schleife nach dem ersten Löschen ungültig wird. Du brauchst einen 'break; 'in der if-Anweisung. –
@Vlad aus Moskau Nur ein Element in dem Vektor, der account.name gleich name hat. –