具有 lambda 函数的函数向量
Vector of function with lambda functions
此代码不正确:
std::vector<int (*)(int)> fv;
for (int i=0; i<10; i++)
{
auto g = [i](int n) -> int
{
return n+i;
};
fv.push_back(&g);
}
因为 lambda 函数不是类型int (*)(int)
而是对象。 我的问题是:我必须放入什么类型vector<...>
?
您可以使用库类型std::function
。
例如:
#include <vector>
#include <functional>
void foo() {
std::vector<std::function<int(int)>> fv;
for (int i = 0; i < 10; ++i) {
fv.emplace_back([i](int n) {
return n + i;
});
}
}
原始代码的问题在于lambda执行捕获(索引i(。 如果没有捕获,lambda 将可转换为指向函数的 int(*((int( 指针,并且代码将编译。
使用 std::函数有效,但它会带来性能损失,所以更好的问题是你打算用函子向量解决什么问题?
相关文章:
- 函数向量_指针有不同的原型,我可以构建一个吗
- 如何使用向量的template_back函数
- 如何通过派生类函数更改基类中的向量
- 变量没有改变?通过向量的函数调用
- 一对向量构造函数:初始值设定项列表与显式构造
- 在c++中使用向量时,如何调用构造函数和析构函数
- std::sort()函数无法对向量的一部分进行排序
- 如何在C++向量中奇数元素前面加上值-1,我在使用insert函数时遇到了问题
- C++中函数的向量返回类型引发错误
- 添加存储在向量中的大整数的函数出现问题
- 如何在 c++ 中定义接受不同参数类型的函数向量?
- 具有 lambda 函数的函数向量
- 你能用参数制作函数向量吗?
- 在C++中使用成员函数向量时,有没有办法实现协变返回类型
- 在编写 lambda 函数向量时出现隔离错误
- 如何在 boost.process 间共享内存中使用复杂结构"push_back"函数向量
- 是否将std矢量重新分配到默认的构造函数向量是擦除的好方法
- 运行提升for_each中的成员函数向量
- 创建和回推函数向量
- C++,指向函数向量的指针的STL映射