社区
C++ 语言
帖子详情
vector 的erase问题
river4321
2008-04-04 08:59:52
一个vector最多可以erase()到什么程度?我觉得好像到size()=3就不动了?
...全文
174
13
打赏
收藏
vector 的erase问题
一个vector最多可以erase()到什么程度?我觉得好像到size()=3就不动了?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
资深码农多年
2008-04-05
打赏
举报
回复
for (i=0;i <testvector.size();i++)
{
vector <int>::iterator testit=testvector.begin();
testvector.erase(testit);
cout < <testvector[0] < <endl;
}
大哥,注意到你的for计数i会增长哟,而vector.size却在减少哟,
你再仔细想一想,是不是嘛。
其实这是你的for loop写得不对也。
vector <int> testvector(5);
for (i=0;i <5;i++)
{
testvector[i]=i;
cout < <testvector[i];
}
因为你加入了5个,而删除的时候,i增加,size()
减少,刚刚当等于3的时候,跳出了也。
river4321
2008-04-05
打赏
举报
回复
晕,是啊,汗
资深码农多年
2008-04-05
打赏
举报
回复
楼主认同我的回答,给点分,表示一下嘛。我很穷,多少给点,我还想下点资料也。
qq271991628
2008-04-05
打赏
举报
回复
[Quote=引用 10 楼 yi_jun_jun 的回复:]
for (i=0;i <testvector.size();i++)
{
vector <int>::iterator testit=testvector.begin();
testvector.erase(testit);
cout < <testvector[0] < <endl;
}
大哥,注意到你的for计数i会增长哟,而vector.size却在减少哟,
你再仔细想一想,是不是嘛。
其实这是你的for loop写得不对也。
vector <int> testvector(5);
for (i=0;i <5;i++)
{
testvector[i]=i;
cout < <testvector[i];
}…
[/Quote]
river4321
2008-04-04
打赏
举报
回复
看来问题是当vector只剩两个元素时,erase(.begain())不起作用了就?
river4321
2008-04-04
打赏
举报
回复
testvector.erase(testvector.begin(),testvector.end());
cout<<testvector.size()<<endl;
这样果然能删到size()==0
Supper_Jerry
2008-04-04
打赏
举报
回复
testvector.erase(testit
--);
修改成这样,erase后指针会移到下一个元素
所以必须--
珍惜生命远离CPP
2008-04-04
打赏
举报
回复
应该是你erase的用法错误.
river4321
2008-04-04
打赏
举报
回复
vector<int> testvector(5);
for (i=0;i<5;i++)
{
testvector[i]=i;
cout<<testvector[i];
}
cout<<endl;
for (i=0;i<testvector.size();i++)
{
vector<int>::iterator testit=testvector.begin();
testvector.erase(testit);
cout<<testvector[0]<<endl;
}
myullian
2008-04-04
打赏
举报
回复
可以到size() = 0
星羽
2008-04-04
打赏
举报
回复
erase 当然可以一直可以到size == 0
不知道你怎么回事
ttkk_2007
2008-04-04
打赏
举报
回复
Removes an element or a range of elements in a vector from specified positions.
iterator erase(
iterator _Where
);
iterator erase(
iterator _First,
iterator _Last
);
你这个不动了是什么意思
ryfdizuo
2008-04-04
打赏
举报
回复
where is the code?
关于
vector
的
erase
问题
处理
Vector
的
erase
成员函数有许多容易导致
问题
的情况.其中以迭代器失效
问题
最为常见. 关于迭代器的失效
问题
,以及
erase
如何删除
vector
中指定值(可能不止一个),我曾今也对
erase
的使用情况和内容结合起来写过一些字. 博文地址:http://blog.csdn.net/yuanweihuayan/article/details/6790516 似乎对于删除的解析已经够全面了.可是
vector
的
erase
问题
问题
引入
vector
调用
erase
(),由于
vector
是采用的random_access_iterator,迭代器可以直接加减来指向元素。 for (int i = 0; i < m; i++) { int t; cin >> t; trail[i] = p[t-1]; //t索引的顺序是递增的 other.
erase
(other.begin() - 1 - i);
vector
的
erase
失效
问题
VS和CGwin的实现效果还不一样,这里先记录下
问题
及解决方法。欢迎和大家一起探讨。
vector
容器
erase
操作后iterate失效真相 一、VS环境下
erase
代码分析 代码: for (auto iter = vec.begin(); iter != vec.end(); ++iter) { if (3 == *iter) { ...
std::
vector
的
erase
的
问题
在利用iterator遍历
vector
并且删除其中一个元素的时候,发生了错误。 错误代码如下:
vector
vec = { 1, 3, 34, 44, 3, 5 }; for (
vector
::iterator it = vec.begin(); it < vec.end(); it++) //
erase
以后执行it++报错 { if (3 == *it) { cou
错误的
vector
erase
引起的
问题
vector
执行
erase
的时候,begin的数值是负数,导致
erase
以后,
vector
的size是一个超级大的数据。
C++ 语言
65,213
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章