我有一個圖是這樣的:如何更改值的對象的屬性到地圖
map<prmNode,vector<prmEdge> > nodo2archi;
在某些情況下,我必須要改變的值對象的屬性到prmEdge的載體。這是代碼:
prmNode par=freePathNode[z];
z++;
prmNode arr=freePathNode[z];
map<prmNode,vector<prmEdge> >::iterator it;
it=nodo2archi.find(par);
app.clear();
vector<prmEdge> arc;
arc=(*it).second;
app=arc;
vector<prmEdge>::iterator itarc;
for (itarc=app.begin(); itarc!=app.end(); itarc++){
prmEdge arco=(*itarc);
int a=arco.getFrom();
int b=arco.getTo();
int f=par.getIndex();
int t=arr.getIndex();
if ((a==f && b==t) || (b==f && a==t)){
if (arco.getState()==0){
if (!is_free_arco(par,arr)){
togli_arco_par(arco,arr);
erased = true;
return erased;
}
else{
//ERROR
//it->second(it->second.begin()).setState(1);
//(*it).second.begin().setState(1);
}
}
}
}
我必須使用方法setState將屬性更改爲映射。問題是,我沒有任何方法從地圖進行此操作,並以這種方式我有一個編譯錯誤。任何人都可以幫我解決這個問題嗎? 非常感謝!
非常感謝你。我認爲這是正確的方法。我還有一個問題。例如,如果要修改的對象是矢量的第三個,我希望這樣做:it-> second.begin()+ 2-> setState(1);但這不是編譯,我怎麼辦?謝謝 – livio8495 2010-02-26 15:27:54
這就是它 - >秒[2] .setState(1); – 2010-02-26 15:30:10
或'(it-> second.begin()+ 2) - > setState(1)',如果您特別想使用迭代器。 – 2010-02-26 15:39:52