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