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

时间:2012-05-08 15:03:12

标签: c++

有没有办法用“double”init-expression写入循环?

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

3 个答案:

答案 0 :(得分:6)

当然,请使用逗号:

vector<int> v;

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

}

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

  

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

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

答案 1 :(得分:5)

是的,有:

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

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

答案 2 :(得分:2)

使用逗号。

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