C++中如何使用lambda实现递归
在用C++刷leetcode时,我希望把一个递归函数像js、python那样写在运行函数内部,那么可以使用function
和lambda表达式
来实现。但如果这个递归函数的参数比较多,那么function的模板参数同样需要写很多,能不能用auto
来实现得简单一点呢?
在C++中,使用lambda表达式实现递归时,由于lambda本身没有显式的类型名,需要通过一些技巧来实现递归调用。使用auto&&
作为参数类型是其中一种常见的做法:
Lambda表达式的类型推断:C++中的lambda表达式没有类型名,意味着无法直接在lambda内部调用自身。如果直接将lambda表达式定义为递归函数,会遇到无法识别的编译错误。
1 |
|
这里不像js、python直接定义就好了,还需要多写一个通用引用(什么是通用引用,可参考这篇博客),具体为什么我也暂时不清楚,只知道和Y组合子
的知识点有关。