复制二维阵列C++



A 试图复制一个数组,例如

for(int i = 0;i < n; ++i)
   for(int j = 0; j < n; ++j)
       B[i][j] = A[i][j];

但是当我改变 A 的元素时,B 的元素也会改变。如何避免这种情况?

你的问题不清楚。但我认为您有两个数组,因此取消引用和更新一个数组也会更新另一个数组。这意味着两者只是指向同一底层数组的指针。相反,您需要的是两个具有自己内存的独立数组。

因此,为AB分别分配内存

// Correct Version :
int *A = new int[K];
int *B = new int[K];

//Incorrect Version:    
int *A = new int[K];
int *B = A;

理想情况下,您将使用std::vector< vector<int> >或库组件,例如boost::ublas::matrix<int>

像这样,如果你在编译时知道数组的大小:

const int n = 30;
int A[n][n];
int B[n][n];
//Populate A here...
//Now copy A to B:
for (int i = 0; i < n; ++i)
    for (int j = 0; j < n; ++j)
        B[i][j] = A[i][j];

最新更新