在C++中,使用functor作为谓词可以增强程序的功能和灵活性。以下是一个使用functor作为谓词的C++ STL程序的示例:
#include <iostream>
#include <vector>
#include <algorithm>
// 定义一个functor对象
class MyFunctor {
public:
bool operator()(const int& a, const int& b) const {
return a > b;
}
};
int main() {
// 创建一个vector
std::vector<int> numbers = {1, 5, 3, 7, 2};
// 使用std::sort()函数对vector进行排序
std::sort(numbers.begin(), numbers.end(), MyFunctor());
// 输出排序后的vector
for (int num : numbers) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
在上面的程序中,我们定义了一个MyFunctor类,该类包含一个成员函数operator(),该函数的返回类型为bool,参数为两个整数。在main()函数中,我们创建了一个std::vector<int>类型的变量numbers,并使用std::sort()函数对其进行排序。在这个例子中,我们使用MyFunctor类作为std::sort()函数的谓词。std::sort()函数将使用MyFunctor对象的operator()函数来比较numbers向量中的元素,并进行升序排序。最后,我们使用for循环输出排序后的vector。
这个程序演示了如何使用C++ STL中的functor对象对vector进行排序。通过使用functor,我们可以将灵活的逻辑与排序算法相结合,并避免修改原始函数的代码。
领取专属 10元无门槛券
手把手带您无忧上云