在C++中,我们经常需要对类中的元素进行比较,例如在排序、查找等操作中。为了使类更加灵活,我们可以通过自定义比较函数来实现不同的比较方式。在本文中,我们将探讨如何在类中使用仿函数和 Lambda 表达式来定义自定义比较函数。
1. 仿函数(Functor)的使用
仿函数是一个类对象,它的实例可以像函数一样被调用。我们可以通过重载函数调用运算符 operator()
来实现仿函数。以下是一个简单的示例,演示了如何在类中使用仿函数来实现自定义比较:
解释
#include <iostream>
// 定义一个比较类
class MyComparator {
public:
// 重载函数调用运算符
bool operator()(const int& a, const int& b) const {
return a > b; // 自定义比较规则
}
};
// 使用比较类的类模板
template <typename T, typename Compare = MyComparator>
class MyClass {
public:
// 成员变量
T data;
// 构造函数,接受比较类作为参数
MyClass(const T& d, const Compare& cmp = Compare()) : data(d), comparator(cmp) {}
// 比较函数
bool compare(const T& other) const {
return comparator(data, other);
}
private:
Compare comparator; // 保存比较类的实例
};
int m