次のコードを検討してください。
vector<int> v;
for(vector<int>::iterator vi = n.begin(), int i = 0;
vi != n.end();
++vi, ++i){}
これが許可されない理由はありますか?vi とインデックス i の両方の 2 つの新しいカウンターを定義できるようにしたいと考えています。
答えは、「構文が必要とする以外の理由は実際にはありません」です。
ただし、許可された場合、コードが非常に複雑になる可能性があることは想像できます。そのため、これに対するサポートを言語に追加しないのは十分な理由です。
代わりに、独自のスコープを作成してバインドできます。
std::vector<int> v;
{
std::vector<int>::iterator it = n.begin(), end = n.end();
int i = 0;
for ( ; it != end; ++it, ++i)
{}
}