我有一个向量的矢量向量,我得到了这个向量的指针。我的问题是我不能用它创建一个迭代器。 这是我的代码:
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不是指针我可以这样做
我怎么能做到这一点?
谢谢!
答案 0 :(得分:3)
取消引用vectorMap
:
for(vector<AbstractBlock*>::iterator i = (*vectorMap)[colonneX-1].begin();
i != (*vectorMap)[colonneX-1].end(); i++)
答案 1 :(得分:0)
vectorMap是一个指向矢量的指针,而不是矢量。他们是两个不同的东西。指针只是指向量,它们不是同一个。你需要取消引用vectorMap。
答案 2 :(得分:0)
你误认为间接的数量。但可能有两种不同的正确含义。
如果vectormap
是指针,vectormap[x]
是假设的vectormap
数组中的第x 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();