1

我想将前 2 个元素移动到向量中的给定位置,使用memmove以下代码结果不正确:

vector<int> v{1, 2, 3, 4, 0};
memmove(&(v[3]), &(v[0]), 2);

这样做的结果是1, 2, 3, 1, 0,而期望是1, 2, 3, 1, 2。我怎样才能完成我的工作?

4

1 回答 1

4

memmove复制字节,而不是任意对象(如int)。所以你需要计算正确的字节数2 * sizeof(int)

但更好的方法是使用std::copy_n

std::copy_n(v.begin(), 2, v.begin() + 3);
于 2017-01-02T11:25:09.970 回答