[英]Pointer on vector of vector and iterator
我有一个对象向量的向量,并且得到了这个向量的指针。 我的问题是我不能用它创建一个迭代器。 这是我的代码:
vector<vector<AbstractBlock*>> *vectorMap = _level->getMap()->getVectorMap();
for(vector<AbstractBlock*>::iterator i = vectorMap[colonneX-1].begin(); i < vectorMap[colonneX-1].end(); i++)
{
/*some operations*/
}
它在vectorMap [colonneX-1] .begin()上失败,如果vectorMap不是指针,我可以这样做
我该怎么做?
谢谢!
取消引用vectorMap
:
for(vector<AbstractBlock*>::iterator i = (*vectorMap)[colonneX-1].begin();
i != (*vectorMap)[colonneX-1].end(); i++)
vectorMap是指向向量的指针,而不是向量。 他们是两个不同的东西。 指针只是指向向量,它们不是同一位的。 您需要取消引用vectorMap。
您误认为间接次数。 但是可能有两种不同的正确含义。
如果vectormap
是一个指针, vectormap[x]
是第x vectormap
在一个假想的vector<vector<AbstractBlock*>>
阵列。
我发现这就是您的意思,因为它与迭代器类型不匹配。
但是*vectormap
是一个vector<vector<...>>
, (*vectormap)[x]
是一个vector<AbstractBlock*>>
,如果迭代两次,它的迭代器就是AbstractBlock
。
你很可能是说
for(vector<AbstractBlock*>::iterator i = (*vectorMap)[colonneX-1].begin();
i != (*vectorMap)[colonneX-1].end(); i++)
(**i).abstractblock_methodcall();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.