STL算法--函数对象
来源:互联网 发布:我知我师我爱我师ppt 编辑:程序博客网 时间:2024/04/30 16:36
函数对象
算法的头文件
#include<algorithm> //功能:比较、交换、查找、遍历、复制、修改、反转、排序、合并等#include<numeric>//数学运算(加法和乘法序列上的一些操作)#include<functional>//定义了模板类,用于声明函数对象
函数对象,重载了()操作符的类定义的对象,又叫仿函数。
#include<iostream>#include<algorithm>#include<string>#include<vector>using namespace std;//函数对象,类重载了()template<typename T>class ShowElim{public: ShowElim() { n = 0; } void Printf() { cout << "n" << n << endl; } void operator()(T &a) //重载()操作符 { n++; cout <<"n="<< n << endl; cout << a << endl; }private: int n;};//函数对象和普通函数的区别//普通函数template<typename T>void funShowElim(T &a){ cout << a << endl;}void funShowElim2(int &a){ cout << a << endl;}void main01(){ int a = 10; ShowElim<int> showelim; showelim(a);//函数对象的()的执行 很像一个函数 ---仿函数 funShowElim<int>(a);}
main01的执行结果:
//函数对象属于类对象,能突破函数的概念,能保持调用状态信息//函数对象的好处void main02(){ vector<int> v1; v1.push_back(1); v1.push_back(2); v1.push_back(3);//用for_each()来遍历 for_each(v1.begin(), v1.end(), ShowElim<int>());//匿名函数对象 匿名仿函数 cout << endl; for_each(v1.begin(), v1.end(), funShowElim2);//通过回调函数 谁使用for_each谁填写回调函数的入口地址 ShowElim<int> s2;----------//for_each的函数声明: //函数对象做函数参数 //template<class _InIt, //class _Fn1> inline // _Fn1 for_each(_InIt _First, _InIt _Last, _Fn1 _Func) //{ // perform function for each element // _DEBUG_RANGE(_First, _Last); // _DEBUG_POINTER(_Func); // _For_each(_Unchecked(_First), _Unchecked(_Last), _Func); // return (_STD move(_Func));---------- s2=for_each(v1.begin(), v1.end(), s2); //这里设计形参和实参的问题,所以要用s2来接返回值。 cout << endl; s2.Printf();}
main02的执行结果:
0 0
- STL算法--------函数对象
- STL算法--函数对象
- STL算法和函数对象
- STL算法和函数对象
- 仿函数(函数对象)和STL算法
- 函数对象和stl算法应用实例
- C++之STL(八):函数对象、 函数对象与容器、函数对象与算法
- STL(八):函数对象、 函数对象与容器、函数对象与算法
- 使用STL中的泛型算法及函数对象
- STL算法设计理念 - 预定义函数对象
- effective stl 第46条:考虑使用函数对象而不是函数作为STL算法的参数
- STL--函数对象
- STL函数对象
- STL之函数对象
- STL 函数对象
- [STL基础]函数对象
- STL 函数对象
- STL中的函数对象
- MTK lcm 背光流程
- 写在开始
- 在Ubuntu 16.04下安装Matlab 2017a
- 计算几何 求相交圆面积(余弦定理)
- EventBus进阶
- STL算法--函数对象
- 11059
- Math类的使用
- Linux Redis的安装
- [2017-4-7]开始写blog
- MODIS数据下载
- 文章标题
- ubuntu samba重启 mount命令
- 蓝桥杯2016:方格填数