Я хочу переместить первые 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);
Других решений пока нет …