私は2つのクラスAを持っているとBの両方がメンバーに以下のように持っている:のstd ::コピーは動作しません正しく
class A {
...
std::vector<std::vector<std::vector<size_t>>> grid;
}
class B {
...
std::vector<std::vector<std::vector<size_t>>> grid;
}
私はBにA ::グリッドからコピーするにはstd ::コピーを使用するときに私が見つけました:: grid、失敗します。ここ は、私が何をすべきかです:
// Here is in B's constructor.
// I initialize B::grid with the same size of A::grid
grid = vector<vector<vector<size_t>>>(GetSetting().grid_cols());
for (int i = 0; i < GetSetting().grid_cols(); i++) {
grid[i] = vector<vector<size_t>>(GetSetting().grid_rows());
for (int j = 0; j < GetSetting().grid_rows(); j++) {
grid[i][j].reserve(a.grid[i][j].size());
}
}
// Copy from A to B
std::copy(a.grid.begin(), a.grid.end(), std::back_inserter(grid));
しかし、私は一部の初期化削除した場合、その後のstd ::コピーが正常に動作します。 初期化部分の何が問題になりますか?
なぜ単純に 'grid = a.grid;'をやっていないのですか? –
@ T.C.私はoperator =()を使用しようとしましたが、正しく動作します。私はちょうど私がstd :: copyを使って何が間違っているか知りたいです。 – Josper