如何将 2 个元素从 head 移动到向量中的给定位置

How to move 2 elements from head into given position in vector

我想将前 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。我怎样才能完成我的工作?

memmove 复制字节,而不是任意对象(如 int)。因此,您需要使用 2 * sizeof(int).

计算正确的字节数

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

std::copy_n(v.begin(), 2, v.begin() + 3);