STL利用remove_if实现filter功能

remove_if函数是STL中的一个函数

remove_if(iterator_begin, iterator_end, opt)

该函数的作用是迭代容器并删除元素,该函数的第一、二个参数是容器的迭代器,第三个参数是自定义比较函数,如果返回true则表示删除这个元素
在遍历过程中,该函数并不是真正的删除元素,而是将需要删除的元素移动到容器末尾,最后函数返回所有删除元素的开始位置的迭代器

配合可迭代容器的erase()方法可以实现类似于其他语言中的filter效果
示例:过滤掉数组中的偶数

#include<bits/stdc++.h>
using namespace std;
// 如果是偶数返回true
bool isEven(int n) {
return n % 2 == 0;
}
int main() {
vector<int> arr = {1, 2, 3, 4, 5, 6, 7};
arr.erase(remove_if(arr.begin(), arr.end(), isEven), arr.end());
cout << "size = " << arr.size() << endl;
for(auto item : arr) {
cout << item << ' ';
}
return 0;
}

运行结果是

size = 4
1 3 5 7
posted @   秋天Code  阅读(41)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
历史上的今天:
2023-05-10 Java中何时触发类加载
2023-05-10 JVM类加载、类变量初始化顺序
点击右上角即可分享
微信分享提示