vector中能不能查找满足条件的多条记录?

xiyupiaopiao 2007-10-17 07:57:38
remove_if好像只能返回一条
...全文
98 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
iambic 2007-10-17
  • 打赏
  • 举报
回复
hastings 2007-10-17
  • 打赏
  • 举报
回复

#include<iostream>
#include<vector>
#include<algorithm>
using std::cout;
using std::endl;
using std::cin;
using std::vector;
template<typename T> void dis(const T& e)
{
cout<<"\n< ";
T::const_iterator it=e.begin();
T::const_iterator ite=e.end();
for(;it!=ite;)
cout<<*it++<<" ";
cout<<">\n";
}
bool IsOuShu(const int& e)
{
return 0==e%2;
}
int main (int argc, char *argv[])
{
vector<int> ivec;
ivec.reserve(20);
for(int n(1);n!=10;)
{
ivec.push_back(n);
ivec.push_back(n++);
}
cin.clear();
cout<<"以下是原容器中含有的整数:";
dis(ivec);
vector<int> iv;
std::remove_copy_if(ivec.begin(),ivec.end(),std::back_inserter(iv),IsOuShu);
cout<<"执行操作后,以下是原容器中含有的数:";
dis(ivec);
cout<<"以下是新容器中含有的数:(都是奇数)";
dis(iv);

return 0;
}

不知我有没有回答到点子上??
xiyupiaopiao 2007-10-17
  • 打赏
  • 举报
回复
说错了,find_if好像只能返回第一个
  • 打赏
  • 举报
回复
find_if 不好么?有函数对象还怕什么啊。
SammyLan 2007-10-17
  • 打赏
  • 举报
回复
注意跌代器失效....
建议用reverse_iterator,rbegin,rend
张琪Samuel 2007-10-17
  • 打赏
  • 举报
回复
vector中查找一般用find函数,比如:

string searchValue("Quasimodo");
list<string>::iterator iter = find(slist.begin(), slist.end(), searchValue);
if (iter != slist.end())
slist.erase(iter);

remove_if是用来移除所有指定内容的。

64,646

社区成员

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

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