C++ 动态 ND 数组

标签 c++ arrays

我在动态创建 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/

相关文章:

java - 如何通过在java中逐个字符添加字符数组来创建字符串

c++ - 在字符串函数中抛出 'char const*'实例后调用终止方法

c++ - 我选择什么项目模板来制作 C++ DirectX DLL?

C++ 如何将日期从输入(字符串年、字符串月、字符串日)转换为时间点

c++ - 简单的 std::sort 不工作

c++ - 玩转字符数组

获取多行时出现 PHP 错误

Java JSON 到数组

c++ - 不同对象的 vector 及其迭代器

c++ - 如何检查 int 变量是否包含合法(非陷阱表示)值?