そのベクトル要素のaccount_nameに応じてlistAccountsからベクトル要素を削除する関数を記述しようとしています。私は、この書かれている:イテレータを使用してオブジェクト型のベクトル要素を削除するC++
void Account::remove_account(string name) {
auto iter = listAccounts.begin();
for (; iter != listAccounts.end(); iter++) {
if ((*iter).account_name == name) {
listAccounts.erase(iter);
}
}
}
しかし、私は、私はそれは私がへのアクセスを持っていないメモリにアクセスしようとしたことを意味を理解するものとはベクトルの除去からセグメンテーションフォールトを取得していますが、しかし、私はよく分かりませんこれを正しく書く方法。
指定された値を持つ要素またはすべての要素を削除しますか? –
重複は、forループが最初の消去後に無効になることを説明します。 if文には 'break;'が必要です。 –
@Vlad from Moscowモスクワの@Vlad名前に等しいaccount.nameを持つベクトル内のただ1つの要素。 –