我有兩個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;
}
我發現,當我使用std ::複製到從A ::電網到B複製:: 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));
但如果我刪除初始化部分,那麼性病::複製將正常工作。 初始化部分有什麼問題?
爲什麼地球上你沒有簡單地使用'grid = a.grid;'? –
@ T.C. ,我也嘗試使用operator =()並且它可以正常工作。我只是想知道什麼是錯誤的,因爲我使用std :: copy :) – Josper