はい、dasblinkenlight が指摘したように、それは危険です。しかし、この種の問題を解消する簡単な方法があります。
最初に単純さと読みやすさを考慮してコードを記述します。ループを最小限の行数に圧縮してもパフォーマンスは向上しません。圧縮したとしても、ループがボトルネックであることがプロファイラーから通知されない限り、気にする必要はありません。
一方で、コードが読みにくくなり、おそらくバグが発生しやすくなります (おそらくお気づきでしょう)。
C++11 では、範囲ベースのfor
ループの使用を検討してください。
for (int& p : something)
{
// ...
}
C++03 では、std::for_each()
、または反復子に基づく従来のループの使用を検討してください。
for (std::vector<int>::iterator i = something.begin(); i != something.end(); ++i)
{
// use *i to refer to the current pointy
// use (i - something.begin()) to get its index
// ...
}