A 试图复制一个数组,例如
for(int i = 0;i < n; ++i)
for(int j = 0; j < n; ++j)
B[i][j] = A[i][j];
但是当我改变 A 的元素时,B 的元素也会改变。如何避免这种情况?
你的问题不清楚。但我认为您有两个数组,因此取消引用和更新一个数组也会更新另一个数组。这意味着两者只是指向同一底层数组的指针。相反,您需要的是两个具有自己内存的独立数组。
因此,为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>
像这样,如果你在编译时知道数组的大小:
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];