前言
C++11 引入了 std::function 和 lambda 表达式,使得编写C++非常简洁和灵活。然而,使用这些特性时,性能问题常常是开发者关注的重点。接下来,我们一起来探讨下std::function和labmda表达式的效率问题。
std::function
std::function 通常用于定义一个函数接口,而具体的实现可以是任何符合签名的可调用对象。
包装普通函数
#include <functional>
#include <iostream>
void myFunction(int a) {
std::cout << "Function called with " << a << std::endl;
}
int
main(int argc, char** argv) {
std::function<void(int)> func = myFunction;
func(10);
return 0;
}
包装labmda表达式
main(int argc, char** argv) {
std::function<void(int)> func = [](int a) {
std::cout << "Lambda called with " << a << std::endl;
};
func(10);
return 0;
}
包装函数对象
#include <functional>
#include <iostream>
st