Трудно точно сказать, в чем ваша проблема, без примера кода, но, похоже, ваш массив содержит указатели.Например:
std::vector<int*> original;
original.push_back(new int[]{1}); // note: for demo only (`new` without `delete` is bad)
std::vector<int*> copy = original;
copy[0][0] = 2; // now original[0][0] also equals 2
Так как copy
содержит те же указатели, что и original
, original[0]
и copy[0]
являются одним и тем же указателем, и поэтому original[0][0]
и copy[0][0]
относятся к одному и тому жеobject.
Это можно исправить, скопировав указанные значения, а не сами указатели, и сохранив указатели на копии в новом массиве.В моем примере проще всего было бы использовать std::vector<int>
вместо int*
:
std::vector<std::vector<int>> original;
original.push_back({1});
std::vector<std::vector<int>> copy = original;
copy[0][0] = 2; // original[0][0] still equals 1