面试真题

C++ · 中等 · 网易

请简述function,lambda,bind之间的关系

中等 C++ 🎤 网易
参考答案
结论:std::function是通用函数包装器,lambda是匿名闭包,bind用于参数绑定,三者实现可调用对象统一。要点:lambda就地定义,编译器生成轻量functor,高效;std::function类型擦除可存储任意可调用对象,有开销;std::bind绑定部分参数生成新可调用体,C++11后常被lambda替代;关系:lambda可赋给function,bind结果也可存入function,如std::function<int(int,int)> fn = [](int a,int b){return a+b;}; auto b = std::bind(f,1,2);。建议优先用lambda。
题目整理自公开面经,答案由校招宝自研生成,仅供参考