我正在学习 C++ 中的容器,并尝试在迭代器的帮助下插入和打印列表元素。我得到的输出与我的预期不同。
#include<iostream>
#include<list>
#include<vector>
#include<deque>
#include<string>
using namespace std;
int main()
{
list<int> ilist(10);
cout<<ilist.size()<<endl;
list<int>::iterator litr = ilist.begin();
int i =0;
for(litr = ilist.begin();litr != ilist.end();litr++,i++)
{
cout<<"i:"<<i<<" ";
//ilist.push_back(i);
*litr=i;
litr++;
}
litr = ilist.begin();
cout<<endl;
cout<<ilist.size();
while(litr != ilist.end())
{
i=*litr;
cout<<i<<endl;
litr++;
}
return 0;
}
输出: 10 我:0 我:1 我:2 我:3 我:4 100 0 1个 0 2个 0 3个 0 4个 0
为什么插入元素后大小改变了,为什么元素没有正确插入?
提前致谢。
最佳答案
在第一个循环中,每次迭代都会使迭代器递增两次(一次在 for
语句中,一次在循环底部)。
这会导致迭代器跳过所有其他元素。
列表的大小保持不变:100
是 10
,紧接着是 0
。 10
是列表的大小,0
是列表的第一个元素。打印出大小后打印一个空格或换行符,您会自己看到。
关于c++ - 迭代器在 C++ 中的工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26093777/