为什么std :: less <int>()是一个函数对象</int>

时间:2014-07-08 09:39:57

标签: c++ stl

为什么std::less<int>()

中使用的函数对象
std::sort(vec.begin(),vec.end(),std::less<int>());

但是std::less<int>是一个类型,运算符是函数调用,没有创建对象,或者我们可以引用的内存地址

2 个答案:

答案 0 :(得分:7)

std::less<int>()是一个构造函数调用。它创建了一个新的std::less<int>对象,是的,它已经超载了operator()

答案 1 :(得分:3)

std::less<int>()确实创建了一个具有内存地址的std::less临时实例(即使它是空的,因此不会占用任何理智编译器的任何实内存)。 sort保留此实例并使用其重载的operator ()进行比较。

std::less<int>()(a, b)将直接执行两个整数之间的比较,以防使用对象创建语法和operator()调用让您感到困惑。