ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

Iteratorを回す

vectorなどのコンテナの要素すべてに何らかの処理を行う場合にwhile文を使うことがある。
この場合、自分はIteratorのインクリメントを忘れて無限ループに入ってしまうというミスをたびたび起こしてしまう。

std::vector<int> v;
std::vector<int>::iterator itr;
    
itr = v.begin();
while(itr != v.end())
{
    // 処理

    itr++;  // これをよく忘れる
}

while文を書いたあとに要素に行う処理の実装に意識が行ってしまうために忘れてしまうのだろう。なので、このような場合は処理を書く前にまずインクリメントでループが正しく行われるように書く癖をつけなくては。
まあ、全部の要素を回すだけなら、for文を使ったほうが良いかも。

for(auto x : v)
{
    // 処理
}