gpt4 book ai didi

c++ - 更新 map 值

转载 作者:太空宇宙 更新时间:2023-11-04 14:58:43 26 4
gpt4 key购买 nike

我有这样一张 map :

map<prmNode,vector<prmEdge>,prmNodeComparator> nodo2archi;

当我必须更新值( vector )时,我获取键及其值,更新值 vector ,删除旧键和值,然后插入键和新 vector 。代码是这样的:

bool prmPlanner::insert_edgemap(int from,int to) {

prmEdge e;
e.setFrom(from);
e.setTo(to);

map<prmNode,vector<prmEdge> >::iterator it;

for (it=nodo2archi.begin(); it!=nodo2archi.end(); it++){
vector<prmEdge> appo;
prmNode n;
n=(*it).first;
int indice=n.getIndex();

if (indice==f || indice==t){
appo.clear();
vector<prmEdge> incArchi;
incArchi=(*it).second;
appo=(incArchi);

appo.push_back(e);

nodo2archi.erase(it);
nodo2archi.insert(make_pair(n,appo) );
}

}
return true;
}

问题是,对于前 40-50 次迭代,一切都进行得很顺利, map 更新得很好,而随着迭代次数的增加,它有时会出现段错误,有时会出现无限空闲。我不知道为什么。有人可以帮帮我吗??非常感谢。

最佳答案

您正在遍历 nodo2archi,同时通过 nodo2archi.erase(it);nodo2archi.insert(make_pair(n, appo) );.如果这样做,您的迭代器可能会变得无效,并且您的 it++ 可能会崩溃。

关于c++ - 更新 map 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2191800/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com