仿函数(Functor、Function Object)
传递给STL算法的函数型参数(functional arguement)不一定要是函数,可以是行为类
似于函数的对象,即Function Object或者Functor。
STL中大量运用了Function Object,也提供了很多预先定义的Function Object。
如果你定义了一个对象,其行为像函数,就可以拿来当函数使用。在c语言中仿函数就是回调函数。
- #include <iostream>
-
#include <string>
-
#include <set>
-
#include <algorithm>
-
-
using namespace std;
-
-
class SortCirterion
-
{
-
public:
- //注意,一定要加const
-
bool operator()( const int &t1, const int &t2 ) const
-
{
-
return t1>t2;
-
}
-
};
-
-
typedef set<int, SortCirterion> myset;
-
-
int main()
-
{
-
myset b;
-
-
for( int i=0; i<5; i++ )
-
{
-
b.insert( i );
-
}
-
-
for( myset::iterator iter=b.begin(); iter!=b.end(); iter++ )
-
{
-
cout << *iter << endl;
-
}
-
}
输出结果:
4 3 2 1 0
阅读(1266) | 评论(0) | 转发(0) |