将std :: vector复制到std :: array中

时间:2014-01-22 07:38:44

标签: c++ c++11 containers

如何将n的第一个std::vector<T>元素复制或移动到C ++ 11中std::array<T, n>

2 个答案:

答案 0 :(得分:28)

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

答案 1 :(得分:4)

您可以使用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是另一个实例。