Как переместить 2 элемента из головы в заданную позицию в векторе

Я хочу переместить первые 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, Как я могу добиться своей работы?

1

Решение

memmove копирует байты, а не произвольные объекты (например, int). Таким образом, вам нужно будет рассчитать правильное количество байтов с 2 * sizeof(int),

Но лучше использовать std::copy_n:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]