C++:Lambda表达式与内联函数异同
Lambda函数 | 内联函数 | |
---|---|---|
定义 | 匿名函数,[capture] (params)->{body} | 常规函数,inline关键字定义 |
用途以及场景 | 提供一种快捷的方式定义临时小型的函数,适合于一次性使用的场景,如作为回调,在算法中使用 | 优化小型函数,减少函数调用的开销 |
调用方式 | 作为函数对象,直接调用 | 和普通函数一样调用 |
优化 | 被编译器自动内联化,取决于编译器的优化策略 | 明确请求编译器尝试内联,但也实际也取决编译器 |
可见性 | 通常在定义的局部作用内可见 | 在定义的任何作用域内都可见 |
生命周期 | 在定义的作用域内有效 | 在整个程序执行期间有效 |
相同之处:都可以被编译器优化而减少调用开销。Lambda核心在于其匿名性和对外部变量的捕获能力,内联函数在于提高小型函数的性能。