为了账号安全,请及时绑定邮箱和手机立即绑定

C++ 嵌套vector中使用erase,没有真正删除元素

C++ 嵌套vector中使用erase,没有真正删除元素

C++
拉丁的传说 2018-10-29 17:17:11
数据放在一个嵌套的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++;     }  }
查看完整描述

2 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

你的remove函数里迭代器指针没有移动吧,group2和it都没有向后移动

查看完整回答
反对 回复 2018-11-03
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

你的“还可以访问到”是指的什么呢?
因为你的remove只删除了一个就返回了,会不会是因为你的这个向量中有多个这种特定元素导致删除完一个其余的还存在?

查看完整回答
反对 回复 2018-11-03
  • 2 回答
  • 0 关注
  • 1449 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信