首页 新闻 会员 周边 捐助

对于已经存在的非空容器,如何从头开始赋值?

0
[已解决问题] 解决于 2012-04-13 10:45

vector<int> ivec1(3);

vector<int>::iterator iter=ivec1.begin();
int tmp;
while(cin>>tmp)
{
ivec1.insert(iter,tmp);
//iter=ivec1.end();
++iter;
}

这样为什么不行?插值除了第一个以外,其余的老是往前插值?比如输入 1,2,3

得到结果为 196613 524584 1 0 0 0 

相关的问题有2:

1.从实验结果来看,不明白 第一个1插入好歹还是1,后面的2和3就变了;

2.从后面还是3个0来看,插入应该是往前插而不是往后插;这么来看我的iter++并没有改变其值,依旧为begin;很是困惑。

C++
爱的谜语的主页 爱的谜语 | 初学一级 | 园豆:187
提问于:2012-04-10 16:29
< >
分享
最佳答案
2

迭代器中插入内容后腰重新获取

因为STL不同的容器对于迭代的实现是有差别的

具体原因你可以直接在VS下Debug进去,STL源代码是和VS一起安装的

奖励园豆:5
2012 | 高人七级 |园豆:21645 | 2012-04-10 17:06

大哥 首先谢谢您! 看到您说的要重新获取 突然知道大概是怎么回事了

但是大哥 回答问题的时候能不能顾及一下 向小弟这样新手的感受~ 后面完全不知所云啊 谢谢!

爱的谜语 | 园豆:187 (初学一级) | 2012-04-11 08:33
其他回答(1)
0

注意迭代器的失效哦

Rollen Holt | 园豆:210 (菜鸟二级) | 2012-04-12 11:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册