【发布时间】:2017-02-02 08:21:08
【问题描述】:
我有两个 A 类和 B 类都有如下成员:
class A {
...
std::vector<std::vector<std::vector<size_t>>> grid;
}
class B {
...
std::vector<std::vector<std::vector<size_t>>> grid;
}
我发现当我使用std::copy()从A::grid复制到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));
但是如果我删除初始化部分,那么 std::copy 会正常工作。 初始化部分有什么问题?
【问题讨论】:
-
你到底为什么不干脆
grid = a.grid;? -
@T.C. ,我也尝试使用 operator=() 并且它工作正常。我只是想知道我使用 std::copy 时出了什么问题 :)