// 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 都可