vector 的erase问题

river4321 2008-04-04 08:59:52
一个vector最多可以erase()到什么程度?我觉得好像到size()=3就不动了?
...全文
118 13 打赏 收藏 转发到动态 举报
写回复
用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后指针会移到下一个元素
所以必须--
  • 打赏
  • 举报
回复
应该是你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?

64,746

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧