温馨提示×

c++ filt怎样实现过滤功能

c++
小樊
121
2024-11-16 15:40:44
栏目: 编程语言

在C++中,你可以使用函数对象(也称为仿函数)和STL算法来实现过滤功能。这里有一个简单的例子,展示了如何使用C++标准库中的std::remove_if算法和自定义函数对象来过滤一个整数向量。

首先,定义一个函数对象,用于判断一个整数是否满足过滤条件。在这个例子中,我们将过滤掉所有小于10的整数:

#include <iostream> #include <vector> #include <algorithm> bool isGreaterThanOrEqualToTen(int number) { return number >= 10; } 

接下来,创建一个整数向量,并添加一些满足和满足不了条件的元素:

std::vector<int> numbers = {5, 12, 3, 15, 7, 20}; 

现在,使用std::remove_if算法和isGreaterThanOrEqualToTen函数对象来移除所有小于10的整数。注意,std::remove_if不会真正删除元素,而是将不需要删除的元素移到向量的开始位置,并返回一个指向新逻辑末尾的迭代器。因此,我们需要使用std::vector::erase方法来删除这些元素:

auto newEnd = std::remove_if(numbers.begin(), numbers.end(), isGreaterThanOrEqualToTen); numbers.erase(newEnd, numbers.end()); 

最后,输出过滤后的向量:

for (int number : numbers) { std::cout << number << " "; } 

这个程序的输出将是:

12 15 20 

这就是如何在C++中使用函数对象和STL算法实现过滤功能的一个简单例子。你可以根据需要修改isGreaterThanOrEqualToTen函数对象来定义自己的过滤条件。

0