首页 > 代码库 > 仿函数
仿函数
1、仿函数
本质:是一个对象,用起来像函数;
原因:在类内对()进行了重载;
2、仿函数和回调函数的区别
(1)、代码如下:
#include<iostream> #include<vector> #include<algorithm> #include<functional> using namespace std; //函数对象:类重载了(); //函数对象和函数是很类似的; template<typename Type> class ShowElem{ public: ShowElem(){ n = 0; } void operator()(Type &t){ //重载了(),此时可以叫做函数对象; n++; cout<<t<<endl; } void printN(){ cout<<"n:"<<n<<endl; } protected: private: int n; }; void main01(){ int a = 10; ShowElem<int> showElem; showElem(a); //函数对象的()的执行,很像一个函数;所以又叫做仿函数; //函数对象可以跟函数的调用一样,直接把对象当作函数名称来使用!!! } //函数对象和普通函数的区别; template<typename Type> //函数模版 void FuncShowElem(Type &t){ cout<<t<<endl; } void FuncShowElem2(int &t){ //普通函数 cout<<t<<endl; } void main02(){ vector<int> v1; v1.push_back(1); v1.push_back(3); v1.push_back(5); for_each(v1.begin(), v1.end(), ShowElem<int>()); //匿名函数对象 匿名仿函数; cout<<endl; for_each(v1.begin(), v1.end(), FuncShowElem2); //通过回调函数;谁使用for_each() } int main(void){ main01(); main02(); return 0; }
(2)、运行结果:
本文出自 “wait0804” 博客,请务必保留此出处http://wait0804.blog.51cto.com/11586096/1875944
仿函数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。