2012-06-06 110 views
1
列表

所以我擡頭的問題,並使用指定的解決方案,並與這段代碼上來:遍歷自定義歸類對象

list<Projectile*>::iterator bullet; 
for(bullet = bullets.begin(); bullet != bullets.end(); bullet++) 
    . 
      . 
      .    
} 

問題:無操作「=」這些操作數相匹配。 !用相同= ... 我無能,爲什麼:/

+0

在這種情況下,「子彈」的類型是什麼? – vstm

+0

列表子彈; – qiuntus

+0

我還建議你將循環的增量部分從「bullet ++」改爲「++ bullet」,在某些情況下它可能會更快,這是一個很好的主意。 –

回答

3

至少根據您的意見,您嘗試使用list<Projectile *>::iterator其中需要list<Projectile>::iterator

順便說一下,1)list很少是容器的最佳選擇,2)大多數情況下,最好用預打包算法迭代而不是編寫循環。

+0

謝謝,這工作。至於使用列表的選擇。我讀了Vectors,Deqeues和Lists的文檔,看起來最適合使用,因爲我將在任何給定的時間從集合中刪除隨機項目,並不斷刪除新項目。您的意思是,打包算法在這種情況下? – qiuntus

+0

添加/刪除項目時是否需要維護訂單?如果沒有,使用矢量,你可以添加到最後,當/如果你需要從中間刪除,你可以交換項目與最後一個,然後從最後刪除它。預封裝的算法就像'std :: for_each'或'std :: transform'。 –

+0

我不關心順序,但是這段文本來自C++ docs「對於涉及在除末尾之外的位置插入或移除元素的操作,它們比deques和列表執行得更差,並且具有不太一致的迭代器和引用清單「。告訴我使用列表而不是矢量。至於for_each,那麼我只是跳進了OpenGl,代碼看起來很「混亂」,我想在這裏保持簡單:) – qiuntus