繁体   English   中英

向量和迭代器的向量上的指针

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM