我有一个2D数组,我需要一次处理一列。我写了一个示例代码来说明我想要做的事情。它显然不会编译。
float a[3][16]; // Create 2D array
void function1() // This function will be called from my application
{
for (int i=0; i<16; i++) // For each column of the 2D array "a"
{
// Call this function that only take 1D array parameters
function2(a[][i]); // What I want is all rows in column i
// MATLAB syntax is: function2(a(:,i));
}
}
void function2(float b[])
{
// Something
}
我知道我可以创建一个临时数组,将每列保存到其中并将其用作function2中的参数。我想知道是否有更好的方法或如何做到这一点?
答案 0 :(得分:4)
最好的方法是将整个2d数组传递给function2()以及选择列的参数。然后沿着轴迭代。
for (int i=0; i<16; i++) // For each column of the 2D array "a"
{
function2( a , i );
}
void function2(float b[Y][X] , size_t col )
{
for( size_t i = 0 ; i < Y ; i++ )
b[i][col] = ...
}