有没有什么方法可以用“double”init-expression编写循环?是否可以通过这种方式定义for循环?
vector<int> v;
//...vector filling...
for (vector<int>::iterator i = v.begin() AND vector<int>::iterator e = v.end(); i != e; ++i){ ...}
有没有什么方法可以用“double”init-expression编写循环?是否可以通过这种方式定义for循环?
vector<int> v;
//...vector filling...
for (vector<int>::iterator i = v.begin() AND vector<int>::iterator e = v.end(); i != e; ++i){ ...}
是的,有:
#include <iostream>
int main() {
for (int i=0, j=10; i<10; ++i, ++j) {
std::cout << i << ", " << j << "\n";
}
}
然而,类型要初始化必须是相同的,因为你需要用逗号的变量。
当然,使用逗号:
vector<int> v;
// ...
for (vector<int>::iterator i = v.begin(), e = v.end(); i != e; ++i)
{
}
为什么这个“作品”是由于for
语句来是如何定义的(我后添加一个分号我暗示for-init-statement
为清楚起见):
for (
表达式语句或简单声明;
条件选择;
表达选择)
一个简单的声明是一种类型接着由逗号分隔的说明符的列表(其是一个标识符,也许指针/参考/数组符号,和一个可选的初始化器)。
使用逗号。
for (vector<int> i = v.begin(), e = v.end(); i != e; ++i){ ...}
这是相当错误的! – juanchopanza
我编辑了你的文章,因为你的意图我认为是正确的,只是语法错了。 –
感谢您的编辑。我刚刚拿到了OP最初发布的内容,并将“AND”变成逗号。 –
哦,我现在明白了。类型必须相同。谢谢。 – Aslan986
在这种情况下,逗号是标点符号。 –