Как скопировать или перенести первые n
элементы std::vector<T>
в С++ 11 std::array<T, n>
?
Скопируйте std::vector в std:: array
Ответ 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());
И здесь другой живой пример.