gpt4 book ai didi

C++ 动态 ND 数组

转载 作者:行者123 更新时间:2023-11-30 00:58:44 26 4
gpt4 key购买 nike

我在动态创建 ND 阵列时遇到问题。例如:

int **A = 0;
A = new int *[rowsA];

for (int i=0;i<rowsA;i++) {
A[i] = new int[columnsA];
for(int j=0;j<columnsA;j++) {
cout << "Enter " << "(" << i << "," << j << "): ";
cin >> A[i][j];
}
}

并传递给函数,例如:print_matrix(&A[0][0],rowsA,columnsA);

void print_matrix(int *A, int x, int y) {
for (int i=0;i<x;i++) {
for (int j=0;j<y;j++) {
cout << A[i+j*x] << " ";
}
cout << ",";
}
}

例如:

输入:1,2,3,4,5,6,7,8,9

输出:6位数字6位数字4,2 6位数字5,3 6位数字6

有什么想法吗?

最佳答案

如果 ND 数组是指 Iliffe vector ,您没有正确构建它。数据必须连续分配,因此在一次分配中,因为连续调用 new 返回的内存不一定是连续的。这应该可以完成工作:

int **A = new int *[rowsA];
int *data = new int[rowsA*columnsA];

for (int i=0;i<rowsA;i++) {
A[i] = data + i*columnsA;
for(int j=0;j<columnsA;j++) {
cout << "Enter " << "(" << i << "," << j << "): ";
cin >> A[i][j];
}
}

关于C++ 动态 ND 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5679852/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com