浅析回调函数,仿函数,Lambda表达式

一、

1、回调函数与仿函数的异同建议去看这位大佬的博文 https://www.daimajiaoliu.com/daima/4ef1bdc4d900400

  总的意思是能用访函数就不用回调...

2、仿函数以类的形式创建,广泛运用在algorithm的算法中

3、随着c++的发展,人们认为每用到仿函数都写一个类太麻烦了,于是C++11语法中出现了Lambda表达式

Lambda表达式完整格式如下:

[capture list] (params list) mutable exception-> return type { function body }

capture list:捕获外部变量列表
params list:形参列表
mutable:标明是否可以修改捕获的变量

return type:返回类型
function body:函数体

我们有时也可以省略其中的一些部分

4、Lambda表达式捕获外部变量与Lambda的参数可以参考这个,写的很棒:

https://www.cnblogs.com/DswCnblog/p/5629165.html

 

二、下面是我对 回调函数,仿函数,Lambda表达式 的简单使用:

#include "stdafx.h" #include <iostream> using namespace std; #include <vector> void print01(int val)//普通函数// { cout<<val<<"\t"; } class print02 { public: void operator()(int a) { cout<<a<<"\t"; } }; //for_each// void Funfor_each() { vector<int>v; for(int i = 0;i<10;i++) { v.push_back(i); } //遍历、、 for_each(v.begin(),v.end(),print01); //1、回调函数// cout<<endl; for_each(v.begin(),v.end(),print02());//2、仿函数// cout<<endl; for_each(v.begin(),v.end(), [](int a){ cout<<a<<"\t"; } );  //3、Lambda表达式//这里就省略了Lambda表达式的一部分// cout<<endl; } int _tmain(int argc, _TCHAR* argv[]) { Funfor_each(); getchar(); return 0; }

 


__EOF__

本文作者_TLSN
本文链接https://www.cnblogs.com/lordtianqiyi/articles/15790121.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   TLSN  阅读(104)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示