// comparator predicate: returns true if a < b, false otherwise struct IntComparator { bool operator()(const int &a, const int &b) const { return a < b; } }; ... // An overload of std::sort is: template <class RandomIt, class Compare> void sort(RandomIt first, RandomIt last, Compare comp); ... int main() { std::vector<int> items { 4, 3, 1, 2 }; std::sort(items.begin(), items.end(), IntComparator()); return 0; } sort的第三個引數,應該是一個Compare 類別的物件,但是在main裡面, 卻直接用IntComparator()當作引數,請問一下這是怎麼回事,應該用什麼關鍵字來查詢?
作者: LiloHuang (十年一刻) 2014-12-29 14:56:00
class type functor http://goo.gl/XBXdTxIntComparator() 會生出一個 callable object進而讓 sort 的實作去呼叫這個 callable object至於那個 Compare 並不是真的有一個 class 叫 Compare那是 class template 帶進來的 class 型別名稱因此命名 IntComparator 或者 FoobarComparator 都可