【发布时间】:2019-10-26 14:48:18
【问题描述】:
首先,如果我混淆了声明/定义等一些术语,我很抱歉。我目前正在尝试熟悉它们。我的问题是:我必须在我的代码中创建一个大矩阵。我想将它移到文件末尾的单独函数中,以使事情更简单。有什么简单的方法可以做到这一点?我不能使用“向量”,因为我必须稍后将矩阵交给一个不支持“向量”的函数(别问,这个函数不是我写的)。
我目前使用这段代码(因为它正在工作),它在主函数中声明矩阵,这样它就不会超出范围。我希望可以直接在函数中分配矩阵的值,但我无法让它工作。
void make_matrix(float (&matrix_float)[255][4]);
int main()
{
// ...
float matrix[255][4]{ 0 };
make_matrix(matrix);
// ...
}
void make_matrix(float (&matrix_float)[255][4])
{
float preparation[255][4]{ { 0, 0, 0, 0 },
{ 0.639999985694885, 0, 0.800000011920929, 1 },
{ 0, 1, 0, 1 },
// ........
};
for (int i = 0; i < 255; i++)
for (int j = 0; j < 4; j++)
{
{
matrix_float[i][j] = preparation[i][j];
}
}
}
有更优雅的方法吗?
【问题讨论】:
-
您显示的(不完整的)代码有什么问题?请刷新how to ask good questions,以及this question checklist。不要忘记如何创建minimal reproducible example。
-
您是否需要一个明确的循环来希望更改?
-
不要使用像 255 和 4 这样的幻数。它会使代码更清晰,更容易更改这些数字
-
如果可能,将矩阵包装在一个类中允许只使用赋值(如
std::array)。 -
您可以使用单个
memcpy代替循环