web-dev-qa-db-ja.com

std :: vectorをstd :: arrayにコピーします

std::vector<T>の最初のn要素をC++ 11 std::array<T, n>にコピーまたは移動するにはどうすればよいですか?

22
LocalToast

使用する - 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());
30
Praetorian

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());

そして here はライブの例です。

移動したい場合は、代わりに 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());

そして here はもう1つのライブの例です。

5
Shoe