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++中的函数向量的主要内容,如果未能解决你的问题,请参考以下文章

从 C++ 中的函数返回向量或数组

将向量传递给C++中的线程函数

如何使用 C++ 中的函数将向量写入文件?

如何从 C++ 中的函数返回向量?

将向量传递和返回到 C++ 中的函数

在 C++ 向量的每个元素上调用函数