该类的目的是实现一种按照给定方式对集合中元素进行排序的函数。这被称为谓词。
它被实现为一个函数对象,即允许在对象上使用函数运算符(这就是 std::set 在幕后所做的)。这是 STL 和类似代码调用自定义对象的常见方式。(函数指针比函数对象(也称为函数器)更受限制)
因此,它的使用方式如下:
Unitless functor;
functor(123, 124); // returns true or false
std::set是一个排序二叉树,因此在每次插入时会多次调用Unitless的()运算符来确定每个长整型值应该放在哪里。
尝试编译并在其中加入一些printf/std::cout,看看会发生什么。
还要注意,像这样的回调(即当您无法看到对您的代码的调用时)在学习曲线的开始阶段会让人感到恐惧和困惑。
然后你习惯了它们并且到处都使用它们,因为它们很方便。
然后你的代码变得可怕和混乱,你像瘟疫一样避免它们。
然后你成为了一个“胶带程序员”,只在适当的地方使用它们,但从不在其他地方使用。
;)