【发布时间】:2017-10-15 19:54:13
【问题描述】:
我正在尝试编写一个函数,根据该向量元素的 account_name 从 listAccounts 中删除一个向量元素。我写了这个:
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 来自莫斯科 向量中有一个 account.name 等于 name 的元素。
-
@Captain Giraffe 我明白了,谢谢。
标签: c++ algorithm object vector erase