我有一个二维数组,需要一次处理一列。我写了一个示例代码来说明我想做什么。它显然不会编译。
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中将其用作参数。我想知道有没有更好的方法或者你会怎么做?
最佳答案
最好的方法是将整个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] = ...
}