A试图复制一个数组,例如
for(int i = 0;i < n; ++i)
for(int j = 0; j < n; ++j)
B[i][j] = A[i][j];
但是当我改变A的元素时,B的元素也会改变。怎么避免这个?
答案 0 :(得分:0)
你的问题不明确。但我认为你有两个数组,解除引用和更新一个也会更新另一个数组。这意味着这两个只是指向相同底层数组的指针。而你需要的是两个独立的阵列,它们有自己的记忆。
因此,分别为A
和B
分配内存
// 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,那么它将会发生。