用erase删除元素

djh512 2010-07-20 11:27:15

int main()
{
int ia[] = { 0,1,1,2,3,5,8,13,21,55,89};
vector<int> ivec(ia,ia+sizeof(ia)/sizeof(int));
list<int> ilist(ia,ia+sizeof(ia)/sizeof(int));

show(ivec);
show(ilist);

for(list<int>::iterator p = ilist.begin();p!=ilist.end();)
{
if( *p & 0x01)
p=ilist.erase(p);
else
++p;
}

for(vector<int>::iterator q = ivec.begin();q!=ivec.end();)
{
if(!(*q & 0x01) )
q=ivec.erase(q);
else
++q;
}
show(ivec);
show(ilist);

return 0;
}

删除vector中的偶数 list中的奇数
问下还能怎么写这个程序
...全文
110 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mstlq 2010-07-20
  • 打赏
  • 举报
回复
有一个函数叫做remove_if
时间关系,我就不示范了……
yunyun1886358 2010-07-20
  • 打赏
  • 举报
回复

#include <algorithm>
#include <list>
#include <vector>

using namespace std;

bool f(int i)
{
return i & 0x01;
}

bool f1(int i)
{
return !(i & 0x01);
}

int main()
{
int ia[] = { 0,1,1,2,3,5,8,13,21,55,89};
vector<int> ivec(ia,ia+sizeof(ia)/sizeof(int));
list<int> ilist(ia,ia+sizeof(ia)/sizeof(int));

list<int>::iterator p;
do
{
p = find_if(ilist.begin(), ilist.end(), f);
if (p!=ilist.end())
{
ilist.erase(p);
continue;
}
break;
}while(true);

vector<int>::iterator pp;
do
{
pp = find_if(ivec.begin(), ivec.end(), f1);
if (pp != ivec.end())
{
ivec.erase(pp);
continue;
}
break;
}while(true);

return 0;
}
zh848024897 2010-07-20
  • 打赏
  • 举报
回复
学习学习
mymtom 2010-07-20
  • 打赏
  • 举报
回复
楼主还想怎么写?
liutengfeigo 2010-07-20
  • 打赏
  • 举报
回复
加个标志变量啊

64,654

社区成员

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

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