J'essaye d'écrire une fonction qui supprime un élément vectoriel de listAccounts en fonction du nom de compte de cet élément vectoriel. Je l'ai écrit:Suppression d'un élément vectoriel d'un type d'objet à l'aide d'un itérateur C++
void Account::remove_account(string name) {
auto iter = listAccounts.begin();
for (; iter != listAccounts.end(); iter++) {
if ((*iter).account_name == name) {
listAccounts.erase(iter);
}
}
}
Mais je reçois une erreur de segmentation de la suppression de vecteur, d'après ce que je comprends, cela signifie que j'ai essayé d'accéder à la mémoire que je n'ai pas accès, mais je ne suis pas sûr comment écrire correctement ceci.
Voulez-vous supprimer un seul élément ou tous les éléments avec la valeur donnée? –
Le duplicata explique que votre for-loop devient invalide après le premier effacement. Vous avez besoin d'un «break» dans l'instruction if. –
@Vlad de Moscou Juste un élément dans le vecteur qui a compte.name égal au nom. –