#include<iostream>
#include<set>
#include<algorithm>
#include<vector>
using namespace std;
void print(int elem)
{
cout << elem << endl;
}
//把一个class做成函数对象,使用方法就像是函数
class PrintInt
{
public:
void operator() (int elem)const//成员函数
{
cout << elem<<" ";
}
};
int main()
{
//预定义的函数对象
set<int> a;//二叉树,会自动排序的红黑树
set<int, less<int>> b;//less函数对象,从小到大排序
a.insert(9);
a.insert(3);
a.insert(8);
a.insert(1);
a.insert(5);
for (set<int>::iterator iter = a.begin(); iter != a.end(); ++iter)
{
cout << *iter << endl;//set会自动排序
}
//函数对象也可以和算法结合在一起
vector<int> ivec;
for (int i = 1; i <= 9; ++i)
{
ivec.push_back(i);
}
for_each(ivec.begin(), ivec.end(), print);//对迭代器范围内的数据用函数或者是函数对象处理
for_each(ivec.begin(), ivec.end(), PrintInt());//函数对象
system("pause");
return 0;
}
算法对象
最新推荐文章于 2021-08-30 09:57:00 发布