在传染媒介和iterator传染媒介的尖

时间:2012-01-25 20:46:01

标签: c++ pointers vector 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不是指针我可以这样做

我怎么能做到这一点?

谢谢!

3 个答案:

答案 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*>>个。

我发现奇怪的是你的意思,因为它与迭代器类型不匹配。

但是*vectormapvector<vector<...>>(*vectormap)[x]vector<AbstractBlock*>>,如果解除引用两次,其迭代器是AbstractBlock

你很可能意味着

for(vector<AbstractBlock*>::iterator i = (*vectorMap)[colonneX-1].begin();
    i != (*vectorMap)[colonneX-1].end(); i++)
    (**i).abstractblock_methodcall();