Avatar ·

什么是C++中的仿函数以及为什么需要它们?

你好!我正在学习C++,遇到了术语“仿函数”(functor)。我读到它有点像行为像函数的对象。但我不太明白,既然有普通函数和函数指针,为什么还需要它。 例如,我知道可以将函数作为比较器传递给`std::sort`: ```cpp bool compare(int a, int b) { return a < b; } std::sort(vec.begin(), vec.end(), compare); ``` 但为什么要使用重载了`operator()`的对象?优势在哪里?我听说仿函数可以存储状态,但不知道如何在实际中应用。你能用一个简单的例子解释一下,在什么情况下仿函数比普通函数更方便? 还有一个问题:仿函数和lambda表达式是同一个东西吗?还是不同的概念?希望能得到详细的解释和代码示例。 <<>>

什么是仿函数?

仿函数(或函数对象)是一个类或结构体,其中重载了函数调用运算符operator()