我对以下代码有疑问:
#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 循环的第一部分初始化,当您将容器的第一个值复制到其中时,这个值会一直打印。
你可以解决这个问题,例如通过
for (int val = q.front(); !q.empty(); q.pop_front(), val = q.front())
{
// as before...
}
关于c++ - 在 C++ 中使用 'deque' 的无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57871155/