为什么std::less<int>()
是
std::sort(vec.begin(),vec.end(),std::less<int>());
但是std::less<int>
是一个类型,运算符是函数调用,没有创建对象,或者我们可以引用的内存地址
答案 0 :(得分:7)
std::less<int>()
是一个构造函数调用。它创建了一个新的std::less<int>
对象,是的,它已经超载了operator()
。
答案 1 :(得分:3)
std::less<int>()
确实创建了一个具有内存地址的std::less
临时实例(即使它是空的,因此不会占用任何理智编译器的任何实内存)。 sort
保留此实例并使用其重载的operator ()
进行比较。
std::less<int>()(a, b)
将直接执行两个整数之间的比较,以防使用对象创建语法和operator()调用让您感到困惑。