别杀了我:我是C ++菜鸟。
这里是code:
const int lengthA = 3;
const int lengthB = 4;
int main() {
double matrix[lengthA][lengthB];
double temp[lengthB];
for (int i = 0; i < lengthB; i++) {
temp[i] = i;
}
matrix[1] = temp;
}
如何将数组分配给可以包含它的矩阵的固定索引?我应该在每个(顺序)位置上迭代每个项目吗?我希望我可以简化过去的内存...
答案 0 :(得分:2)
您不能,数组不可分配。
以下是三种可能的解决方法:
std::array
(或std::vector
)std::copy
,std::copy_n
或std::memcpy
)matrix
组成一个指针数组我建议先使用std::array
(或std::vector
),再进行复制,并仅将指针用作最后的选择。
答案 1 :(得分:2)
您不直接分配 raw 数组,而是复制其内容或处理指向数组的指针
int main() {
double* matrix[lengthA]; // Array of pointers, each item may point to another array
double temp[lengthB]; // Caveat: you should use a different array per each row
for (int i = 0; i < lengthB; i++) {
temp[i] = i;
}
matrix[1] = temp;
}
请记住,这不是现代的C ++处理方式(使用std::array或std::vector可能会更好)
答案 2 :(得分:0)
您可以使用double *matrix[lengthB];
代替double matrix[lengthA][lengthB];