我正在使用双端队列存储从1到10的整数并输出到控制台1到10,但是由于某些未知原因,它为每个循环输出11。我不知道我在做什么错。
#include <iostream>
#include <cstring>
#include <deque>
using namespace std;
int main()
{
deque <int> deq;
int i;
for ( i= 1 ;i <=10 ;i++)
{
deq.push_front(i);
}
deque <int>::iterator d2;
d2 = deq.begin();
while (d2 != deq.end() )
{
cout<<i
<<endl;
d2++;
}
}
感谢您的帮助,我已经了解了问题
最佳答案
您需要打印出迭代器包含的值,而不是i
:
while (d2 != deq.end() )
{
// wrong!
//cout<<i
// <<endl;
cout << *d2 << endl;
d2++;
}
作为附带说明,这说明了为什么您应始终将变量的范围限制为尽可能小的范围。如果您的原始循环被声明为:
for(int i = 1; i <= 10; ++i)
然后,稍后尝试(错误地)打印出
i
可能是编译时错误。