为什么C ++ std :: min_element库函数接受使用bool返回类型的函数对象而不是像C中的int的函子?

Rus*_*esh 1 c++ stl

C ++标准库函数std::min_element()接受一个函数对象作为最后一个参数,并且该对象的返回类型为bool。为什么不int呢?

使用true或false时,我们只有两个选项:<>,但是如果两个条目相同,那该==怎么办?

在C中,可以通过将返回类型选择为来处理这种情况int。但这不是std::min_element()在C ++中完成的。

这是什么原因呢?

Tim*_*imo 6

您将从这些信息中获得什么?该函数应该返回最小的元素(因此为name min_element)。它不需要关心平等,从中最终得到什么呢?布尔值足以判断一个元素是否小于另一个。如何处理平等取决于您可实现对象的实现。

cppreference的话来说:

bool cmp(const Type1 &a, const Type2 &b);
Run Code Online (Sandbox Code Playgroud)

比较函数对象(即满足“比较”要求的对象),如果a小于b,则返回?true。