复制2D数组C ++

时间:2015-04-28 16:43:14

标签: c++ arrays

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

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

但是当我改变A的元素时,B的元素也会改变。怎么避免这个?

3 个答案:

答案 0 :(得分:0)

你的问题不明确。但我认为你有两个数组,解除引用和更新一个也会更新另一个数组。这意味着这两个只是指向相同底层数组的指针。而你需要的是两个独立的阵列,它们有自己的记忆。

因此,分别为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>

这样的库组件

答案 1 :(得分:0)

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

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];

答案 2 :(得分:-1)

如果要在复制到阵列B之前更改阵列A,那么它将会发生。