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頁對函數呼叫運算子的介紹。