使用 C++ 中的函数生成函数

Generate functions with a function in C++

我正在使用 C++,需要生成一个矩阵,其元素是幂级数的单项式,在不同的坐标下进行计算。例如,假设矩阵的每一行都是通过计算单项式 1、x、y、x*x、x*y、y*y 在坐标 (x,y) = (-1,-1) 处生成的,( 0,0), (1,1),则写为:

1 -1 -1 1 -1 1
1 0 0 0 0 0
1 1 1 1 1 1

实际上,单项式列表和坐标都是可变的。比如我可能想把单项式列表扩展到更高的维度和阶数,坐标可以任意大。

目前,我可以使用字符串生成单项式列表,但我需要以某种方式将字符串转换为可以占用数值的变量。这在 C++ 中可行吗?

您可以 return std::array/std::vector 来自 functions/lambdas:

std::vector<int> createRow(int x, int y)
{
    return {1, x, y, x * x, x * y, y * y};
}

template <typename RowGenerator>
std::vector<std::vector<int>>
createMatrix(RowGenerator gen, const std::vector<std::pair<int, int>>& input)
{
    std::vector<std::vector<int>> res(input.size());

    std::transform(input.begin(), input.end(), res.begin(), gen);
    return res;
}