template <typename T>int compare(const T &v1, const T &v2) { if (less<T>()(v1, v2)) return -1;//这里的less<T>后面为什么有两对括号?第一对为何是空的? }
less是一个函数对象,所谓函数对象就是一个重载了调用运算符(就是“()”运算符)的类,它的对象可以“像函数一样使用”,所以叫做函数对象,第一个括号表示调用构造函数,后面的括号就是他的参数,你这个应该是C++ Primer上的例子吧,具体请看C++ Primer 5th第506页对函数调用运算符的介绍。
less是一个函数对象,所谓函数对象就是一个重载了调用运算符(就是“()”运算符)的类,它的对象可以“像函数一样使用”,所以叫做函数对象,第一个括号表示调用构造函数,后面的括号就是他的参数,你这个应该是C++ Primer上的例子吧,具体请看C++ Primer 5th第506页对函数调用运算符的介绍。