社区
C++ 语言
帖子详情
容器vector
guyuexd
2012-05-21 04:53:17
for(vector<int>::iterator vit = ivec.begin(); vit != ivec.end(); ++vit)
{
if( *vit % 2 == 0)
{
vit = ivec.erase(vit);
--vit;
}
}
编译OK,运行错误提示
Expression: vector iterator not decrementable
用的是VS2010
把 --vit 注释掉可以运行 为什么??
...全文
295
11
打赏
收藏
容器vector
for(vector::iterator vit = ivec.begin(); vit != ivec.end(); ++vit) { if( *vit % 2 == 0) { vit = ivec.erase(vit); --vit; } } 编译OK,运行错误提示 Expression: vector iterator not decrementable 用的是VS2010 把 --vit 注释掉可以运行 为什么??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
penyatree
2013-11-16
打赏
举报
回复
for(list<int>::iterator lit=ex_Lerase.begin(); lit != ex_Lerase.end(); ){ if(*lit % 2 != 0){ lit=ex_Lerase.erase(lit); } else{ ++lit; } 正解应该这样
ly3123
2013-04-21
打赏
举报
回复
int main() { int ia[] = {1,1,0,0,1,1,2,2,5,8,13,21,55,89} ; vector<int> ivec1(ia,ia+14) ; list<int> ilist1(ia,ia+14) ; cout << "容器vector中的所有值为:" << endl ; for(vector<int>::iterator iter = ivec1.begin();iter != ivec1.end();++iter) { cout << *iter << " " ; } cout << endl ; cout << "容器list中的所有值为:" << endl ; for(list<int>::iterator iter = ilist1.begin();iter != ilist1.end();++iter) { cout << *iter << " " ; } cout << endl ; while(*(ivec1.begin())%2==0) //容器的第一个元素要单独处理 { ivec1.erase(ivec1.begin()); } for(vector<int>::iterator iter = ivec1.begin();iter != ivec1.end();++iter) { if((*iter)%2==0) { iter = ivec1.erase(iter) ; --iter ; } } cout << "vector容器中删除了偶数之后的所有值为:" << endl ; for(vector<int>::iterator iter = ivec1.begin();iter != ivec1.end();++iter) { cout << *iter << " " ; } cout << endl ; while(*(ilist1.begin())%2!=0) { ilist1.erase(ilist1.begin()); } for(list<int>::iterator iter = ilist1.begin();iter != ilist1.end();++iter) { if((*iter)%2!=0) { iter = ilist1.erase(iter) ; --iter ; } } cout << "list容器中删除了奇数之后的所有值为:" << endl ; for(list<int>::iterator iter = ilist1.begin();iter != ilist1.end();++iter) { cout << *iter << " " ; } cout << endl ; }
ly3123
2013-04-21
打赏
举报
回复
ia中第一个元素是偶数,这时的迭代器不能自减,因为ivec.begin()前一个元素未知。
cbzjzsb123
2012-05-21
打赏
举报
回复
代码源于C++ Primer习题解答一书,程序要删除vector中的偶数
2#解释下为什么出错,vector换成list,deque可以,用Dev也可以过。。
guyuexd
2012-05-21
打赏
举报
回复
代码源于C++ Primer习题解答一书,程序要删除vector中的偶数
2#解释下为什么出错,vector换成list,deque可以,用Dev也可以过。。
plantain_00
2012-05-21
打赏
举报
回复
楼上正确,iterator对下标越界很敏感,一旦有可能越界就会报错。如果是指针不会报错的,这样的话,唯一出了问题,没法找。楼主单步运行一下,很容易找到哪儿错了。
老霍精讲编程
2012-05-21
打赏
举报
回复
数错了,应该是2楼正解,嘿嘿
老霍精讲编程
2012-05-21
打赏
举报
回复
三楼正解, LZ出现运行时异常的原因可能是当vit指向ivec.begin()或者ivec中已经被删除的没有元素时发生的.
画地为牢
2012-05-21
打赏
举报
回复
用g++编译运行毫无压力,可能版本比较新
qq120848369
2012-05-21
打赏
举报
回复
for(vector<int>::iterator vit = ivec.begin(); vit != ivec.end(); )
{
if( *vit % 2 == 0)
{
vit = ivec.erase(vit);
} else {++vit;}
}
liyoubaidu
2012-05-21
打赏
举报
回复
iterator 没有实现减运算
C++二维
容器
vector
的使用及一个经典案例
C++二维
容器
vector
的使用及一个经典案例
vector
(
容器
)的调用及初始化二维
vector
的插入元素经典案例---查找某元素target是否存在二维数组
vector
中
vector
(
容器
)的调用及初始化 C++使用
vector
前需要调用其头文件,为了...
C++最经典的三大
容器
Vector
、Map、List
容器
有太多,下面就来讲讲用得到也最常用的三种
容器
vector
、list、map。 第一种:
Vector
容器
示意图: 特点: 地址不变,内存空间连续,所以在中间进行插入和删除时会造成内存块拷贝,如果插入的是结构体或者...
不同维度、元素的
容器
vector
初始化自定义(C++)
C++中
容器
vector
非常常见,有时候需要事先定义其
容器
的长度,其中包括一维、二维
容器
长度的定义,其中二维
容器
定义可以用于存储二维数组,用于点云数据组织,分块处理等,下面分别介绍一维与二维
容器
的初始化。...
C++
vector
容器
vector
容量和大小
C++
vector
容器
vector
容量和大小 功能描述: 对
vector
容器
的容量和大小操作 函数原型: empty(); //判断
容器
是否为空 capacity(); //
容器
的容量 size(); //返回
容器
中元素的个数 resize(int num); //重新...
STL库
容器
vector
at函数
STL库
容器
vector
at函数 v.at(n)返回v指定位置n的元素。at函数比[]运算符更加安全, 因为它不会让你去访问到越界的元素,一旦越界将会在运行时中止程序并抛出一个异常std::out_of_range。 例如
vector
<int...
C++ 语言
65,210
社区成员
250,518
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章