如何将数组分配给固定矩阵索引?
How can I assign an array to a fixed matrix index?
别杀我:我是 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;
}
如何将数组分配给可以包含它的矩阵的固定索引?我应该在每个(顺序)位置上迭代每个项目吗?我希望我可以简单的过去大块的记忆...
你不能,数组不可赋值。
这里有三种可能的解决方法:
- 改用
std::array
(or std::vector
)
- 将元素从一个数组复制到另一个数组(通过
std::copy
, std::copy_n
or std::memcpy
)
- 改为
matrix
指针数组
我建议首先使用 std::array
(或 std::vector
),然后复制,最后才使用指针。
您不直接分配 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 or std::vector)
您可以使用 double *matrix[lengthB];
而不是 double matrix[lengthA][lengthB];
别杀我:我是 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;
}
如何将数组分配给可以包含它的矩阵的固定索引?我应该在每个(顺序)位置上迭代每个项目吗?我希望我可以简单的过去大块的记忆...
你不能,数组不可赋值。
这里有三种可能的解决方法:
- 改用
std::array
(orstd::vector
) - 将元素从一个数组复制到另一个数组(通过
std::copy
,std::copy_n
orstd::memcpy
) - 改为
matrix
指针数组
我建议首先使用 std::array
(或 std::vector
),然后复制,最后才使用指针。
您不直接分配 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 or std::vector)
您可以使用 double *matrix[lengthB];
而不是 double matrix[lengthA][lengthB];