数据放在一个嵌套的vector里,我需要找到内层vector的特定元素然后删掉。但是我发现没有真的删掉,还是能访问到。为什么呢
bool LayerDic::remove(CString IdCStr)
{
vector<vector<Data>>::iterator group2 = resDataGroup.begin();
while ((group2) != resDataGroup.end()) {
vector<Data>::iterator it = (*group2).begin();
while ((it) != (*group2).end()) {
if (it->getIdCStr().Compare(IdCStr) == 0)
{
(*group2).erase(it);
temp();//为了验证是否真的删除
return true;
}
}
}
return false;
}
void LayerDic::temp()
{
vector<vector<Data>>::iterator group2 = resDataGroup.begin();
while ((group2) != resDataGroup.end())
{
vector<Data>::iterator it = (*group2).begin();
while ((it) != (*group2).end()) {
CString cs = it->getIdCStr();
it++;
}
group2++;
}
}
你的remove函数里迭代器指针没有移动吧,group2和it都没有向后移动
你的“还可以访问到”是指的什么呢?
因为你的remove只删除了一个就返回了,会不会是因为你的这个向量中有多个这种特定元素导致删除完一个其余的还存在?