rda*_*mon 2 c++ dictionary vector segmentation-fault
我已经尝试了所有可能的可能性,但未能找到解决方案。请帮忙
我想在迭代时删除地图中向量中的记录。
map < string, vector < record> >::iterator map_it;
for(map_it = map_records.begin(); map_it != map_records.end(); ++map_it){
vector < record>::iterator vec_it;
for(vec_it = (*map_it).second.begin(); vec_it != (*map_it).second.end();){
if(condition){
cout << (*map_it).second.size() << endl;
vec_it = map_it->second.erase(vec_it);
cout << (*map_it).second.size()<< endl;
} else {
++vec_it;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试了这样的方法,
(*map_it).second.erase(vec_it)
如果我查询它的大小并且程序以分段错误结束,它会给出一些很长的数字
输出:
18446744073709551615
18446744073709551615
分段错误
任何帮助表示赞赏
vec_t = map_it->second.erase(vec_it); //note the assignment!
Run Code Online (Sandbox Code Playgroud)
您还需要立即检查其有效性,因此最好将内部循环重写为:
for(vec_it = (*map_it).second.begin(); vec_it != (*map_it).second.end(); )
{
if(condition)
vec_it = map_it->second.erase(vec_it);
else
++vec_it;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2467 次 |
| 最近记录: |