c++实现filter
时间: 2023-07-20 14:39:28 浏览: 65
C++中实现filter的方法有很多,具体实现方式会根据不同的场景和需求而有所不同。以下是一个示例代码,用于对一个整数数组进行滤波处理,保留其中绝对值大于等于5的元素:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
std::vector<int> filter(std::vector<int> data)
{
auto func = [](int x) { return std::abs(x) >= 5; };
auto end = std::remove_if(data.begin(), data.end(), func);
data.erase(end, data.end());
return data;
}
int main()
{
std::vector<int> data = {1, -3, 6, 8, -4, 2, -7, -9, 5};
auto result = filter(data);
for (auto& x : result) {
std::cout << x << " ";
}
std::cout << std::endl;
return 0;
}
```
这段代码中,`filter`函数接受一个整数数组,并返回一个新的数组,其中只包含绝对值大于等于5的元素。具体实现方法是使用一个lambda函数来判断元素是否符合条件,然后使用`std::remove_if`算法将不符合条件的元素移动到数组的末尾,并返回一个迭代器指向新的末尾位置,最后使用`std::vector`的`erase`方法将这些元素从数组中删除。
相关推荐
![h](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)