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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
2023-05-10 Java中何时触发类加载
2023-05-10 JVM类加载、类变量初始化顺序