使用 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;
}
我正在使用 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;
}