【发布时间】:2019-09-10 12:47:30
【问题描述】:
我对以下代码有疑问:
#include <iostream>
#include <deque>
using namespace std;
int main() {
deque<int> q = {1};
for (int val = q.front(); !q.empty(); q.pop_front()) {
cout << val << endl;
q.push_back(val + 1);
q.push_back(val + 2);
}
}
它会产生一个无限循环(这是正确的),但不是打印1 2 3 4 ...,而是打印1 1 1 1 1...。为什么会这样?
【问题讨论】:
-
val在for循环的第一次迭代之前的初始分配之后在哪里更新?
标签: c++ loops for-loop infinite-loop deque