程序目的是给定根据两数大小添加元素,比如输入1,5,输出12345,运行时候显示vector迭代器越界,代码如下
for(int c=0;c!=*iterbefend-*iterbeg-1;++c){
int d=*iterbeg+c+1;
//iterbefend=ivecend()-1;
ivec.insert(iterbefend,d);
其中iterbeg指向begin,iterbefend指向end之前一个元素
奇怪的是,加入注释那句就可以运行了
我想问为什么在循环时候要重置迭代器
insert不是返回插入元素的迭代器吗?
int limit=*iterbefend-*iterbeg-1;
int d=*iterbeg;
for(int c=0;c!=limit;++c){
iterbefend=ivec.end()-1;
ivec.insert(iterbefend,++d);
改成这样才通过,难道每次插入值后,所有的迭代器都会被重置吗?
vector 越界问题
答案:2 悬赏:0 手机版
解决时间 2021-02-16 17:52
- 提问者网友:最爱你的唇
- 2021-02-15 17:25
最佳答案
- 五星知识达人网友:往事隔山水
- 2021-02-15 18:00
当对迭代器对应的容器进行任何添加或删除操作(不包括修改容器内元素值),则其所有与该容器相关联的迭代器就会失效,需要重新赋值
全部回答
- 1楼网友:轻熟杀无赦
- 2021-02-15 19:24
at有两个重载函数,
reference at(
size_type _pos
);
const_reference at(
size_type _pos
) const;
可以修改的.
如果实在不行,用const_cast试试
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯