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