作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这样一张 map :
map<prmNode,vector<prmEdge> > nodo2archi;
在某种情况下,我必须将值中的对象属性更改为prmEdge 的 vector 。这是代码:
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 将属性更改为 map 。问题是我没有 map 中的任何方法来进行此操作,因此我遇到了编译错误。谁能帮我解决这个问题??非常感谢!
最佳答案
it->second.begin()->setState(1)
应该这样做。 it->second.begin()
是一个 vector 迭代器,因此您需要 ->
来访问 vector 元素。
如果您需要访问 vector 的其他元素,您当然可以使用 vector 的接口(interface)而不是迭代器,例如it->second[2].setState(1)
.
关于c++ - 如何将值中对象的属性更改为映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2341084/
我是一名优秀的程序员,十分优秀!