【发布时间】:2018-12-30 02:51:55
【问题描述】:
我有一个方法,它传递一个对象,通过在循环中匹配其地址在指针向量中找到该对象,并且需要从向量中删除匹配项而不删除该项(即该项需要仍然存在于内存中)。目前是这样的方法:
void remove(Soldier& soldier) {
for (size_t i = 0; i < armySize(); ++i) {
if (army[i] == &soldier) {
cout << army[i]->getName() << "is removed" << endl;
army.erase(i);
break;
}
}
}
其中soldier 是需要移除的对象,army 是Soldier 指针的向量。 if 语句有效,这意味着soldier 的地址和向量中的一个项目匹配。问题是我收到一条错误消息,提示“没有匹配的成员函数调用'erase'”。如果不使用迭代器(没有 new、delete 或 begin 方法),我将如何解决这个问题?
【问题讨论】:
-
为什么不想使用迭代器?
-
army.begin() + i是您要删除的项目的迭代器。不知道你为什么对这么简单的事情死心塌地。 -
我不能使用迭代器,因为这是规范的一部分
标签: c++ c++11 computer-science