我有一个map<string, vector<record>>,如何从vector<record>中删除记录?

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
分段错误

任何帮助表示赞赏

Naw*_*waz 5

   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)