我想将前 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);