【发布时间】:2018-04-08 20:16:49
【问题描述】:
我有int *a 用于 5x4 矩阵,其中 5 是行,4 是列。
矩阵的内存分配是列是连续的,每一行都在单独的列之后开始。
我喜欢从vector< vector <int>> b;复制数据
b 也有相同的大小和维度,有 5 行和 4 列。
我是如何获得b 的数据的
b.resize(5);
for(int i = 0; i < 5; i++){
b[i].resize(4);
}
我喜欢将数据从b 复制到a。
可以使用std::memcpy(a, &b, sizeof (int)*20)吗?
编辑:
对不起,我喜欢以另一种方式复制。
std::memcpy(&b, a, sizeof (int)*20)
【问题讨论】:
-
@VTT 对不起,我喜欢以另一种方式复制。我编辑了。
-
复制到哪个方向都没关系,只需要从/复制到vector的缓冲区,即使用
vector::data()方法返回的指针。此外,由于b包含向量,因此您还需要遍历这些向量。 -
vector<vector<T>>更接近指针数组而不是二维数组。行不连续,因此您不能使用单个 memcopy。