c++中的函数向量
Posted
技术标签:
【中文标题】c++中的函数向量【英文标题】:vector of functions in c++ 【发布时间】:2021-08-23 18:33:40 【问题描述】:我有一个向量:
std::vector<int> v;
我将 10 个元素推回这个向量,所以现在它有 10 个元素:v[0], v[1], ... ,v[9]
我还有另一个向量:
std::vector<std::function<>()> v5;
我想 push_back() 这些公式到 v5: v[0]*v[1], v[0]*v[2], ...
如何将这些公式 push_back() 转换为 v5 向量?你能帮我语法吗? 稍后我将在程序中使用这些公式。
例如当我调用v5[0]时,我想提取v[0]*v[1](第一个push_back公式到v5)。
【问题讨论】:
如果我没记错的话,你已经问过这个问题两次了吗?存储“公式”有什么意义? @silverfox 你是对的。我需要将公式存储在向量中。然后我会在程序中使用这些公式。 【参考方案1】:这可能是一种方式:
#include <functional>
#include <iostream>
#include <vector>
int main()
std::vector<int> v3,4,5;
// a vector of std::functions capturing v by reference
std::vector<std::function<int()>> v5
[&v] return v[0] * v[1]; ,
[&v] return v[0] * v[2]; ,
;
for(auto&& func : v5)
std::cout << func() << '\n';
v[0] = 10; // changing v changes the output of the formula:
std::cout << v5[0]() << '\n';
输出:
12
15
40
【讨论】:
我不想要评估结果。我想存储公式。 @MehmetB。好吧,我一开始可能误解了你的意图。我已经更新了答案。这是你更想做的事情吗?以上是关于c++中的函数向量的主要内容,如果未能解决你的问题,请参考以下文章