4

次のコードを検討してください。

vector<int> v;
for(vector<int>::iterator vi = n.begin(), int i = 0;
    vi != n.end();
    ++vi, ++i){}

これが許可されない理由はありますか?vi とインデックス i の両方の 2 つの新しいカウンターを定義できるようにしたいと考えています。

4

6 に答える 6

2

答えは、「構文が必要とする以外の理由は実際にはありません」です。

ただし、許可された場合、コードが非常に複雑になる可能性があることは想像できます。そのため、これに対するサポートを言語に追加しないのは十分な理由です。

代わりに、独自のスコープを作成してバインドできます。

std::vector<int> v;
{
   std::vector<int>::iterator it = n.begin(), end = n.end();
   int i = 0;

   for ( ; it != end; ++it, ++i)
   {}
}
于 2013-10-21T15:30:11.680 に答える