0

所以我有一个二维数组,我想将二维数组的第 'pth' 行分配给一个新的一维数组:我的代码如下所示:

float temp[] = { *aMatrix[p] }; // aMatrix is  a 10x10 array
                                // am trying to assign the pth row
                                // to temp. 

*aMatrix[p] = *aMatrix[max];

*aMatrix[max] = *temp;

float t = bMatrix[p];
bMatrix[p] = bMatrix[max];

在上面的声明之后, temp 的长度应该为 10,其中包含 aMatrix 的第 p 行的所有值,但它只包含一个值。我已经尝试了该语句的所有组合,但除了编译错误之外什么也没得到。

我的问题是完成这项任务的正确方法是什么?

任何帮助,将不胜感激。谢谢

4

2 回答 2

3

看起来你有点混淆了指针。您不能使用简单的分配复制所有成员。C++ 不支持数组的成员分配。您应该像这样遍历元素:

float temp[10];

// copy the pth row elements into temp array.
for(int i=0; i<10; i++) {

   temp[i] = aMatrix[p][i]; 
}

如果您的 aMatrix 可能在某些时候更改长度,您也可以使用第二种方式:

int aLength = sizeof(aMatrix[p]) / sizeof(float);

float temp[aLength];

// copy the pth row elements into temp array.
for(int i=0; i < aLength; i++) {

   temp[i] = aMatrix[p][i]; 
}
于 2012-07-12T19:12:39.607 回答
0

为什么不使用std::array?与 C 风格的数组不同,它是可赋值的。

typedef std::array<float, 10> Row;

std::array<Row, 10> aMatrix;

Row temp = aMatrix[5];
于 2012-07-12T19:26:54.697 回答