是否有可能以这种方式定义for循环?

Asl*_*986 1 c++

有没有办法用"双"init-expression写入循环?

vector<int> v;
//...vector filling...
for (vector<int>::iterator i = v.begin() AND vector<int>::iterator e = v.end(); i != e; ++i){ ...}
Run Code Online (Sandbox Code Playgroud)

use*_*116 6

当然,请使用逗号:

vector<int> v;

// ...
for (vector<int>::iterator i = v.begin(), e = v.end(); i != e; ++i)
{

}
Run Code Online (Sandbox Code Playgroud)

为什么这个"有效"是由于如何for定义一个-statement(for-init-statement为了清晰起见,我在隐含之后添加了一个分号):

for ( 表达式语句简单声明 ; 条件opt ; 表达式opt )

一个简单的声明是一个类型,后跟逗号分隔的声明符列表(它是一个标识符,可能是指针/引用/数组表示法,以及一个可选的初始值设定项).

  • 因为声明以类型说明符开头,后跟逗号分隔的声明符列表.这与`for`声明中的糖相同. (2认同)

jua*_*nza 5

就在这里:

#include <iostream>
int main() {
  for (int i=0, j=10; i<10; ++i, ++j) {
    std::cout << i << ", " << j << "\n";
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,要初始化的变量类型必须相同,因为您需要使用逗号运算符.