有没有办法用“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){ ...}
答案 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){ ...}