Подтвердить что ты не робот

Скопируйте std::vector в std:: array

Как скопировать или перенести первые n элементы std::vector<T> в С++ 11 std::array<T, n>?

4b9b3361

Ответ 1

Используйте std::copy_n

std::array<T, N> arr;
std::copy_n(vec.begin(), N, arr.begin());

Изменить: я не заметил, что вы спросили о перемещении элементов. Чтобы переместить, оберните исходный итератор в std::move_iterator.

std::copy_n(std::make_move_iterator(v.begin()), N, arr.begin());

Ответ 2

Вы можете использовать std::copy:

int n = 2;
std::vector<int> x {1, 2, 3};
std::array<int, 2> y;
std::copy(x.begin(), x.begin() + n, y.begin());

И здесь живой пример.

Если вы хотите переместить, вместо этого вы можете использовать std::move:

int n = 2;
std::vector<int> x {1, 2, 3};
std::array<int, 2> y;
std::move(x.begin(), x.begin() + n, y.begin());

И здесь другой живой пример.