簡體   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