如何将std::vector<T>
的第一个n
元素复制或移动到C++中11 std::array<T, n>
?将std :: vector复制到std :: array
回答
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());
这里N是const?数组
@notbad是的,'N'是常量(我猜应该在问题中使用'n') – Praetorian
还有'std :: move'。可悲的是,不是'std :: move_n'。 –
您可以使用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的另一个活生生的例子。
'n'怎么样?它不应该是'std :: copy(x.begin(),x.begin()+ n,y.begin());'? – legends2k
而不是使用'n'这样的变量,使用'x.size()'会更好吗? –
- 1. 将std :: array转换为std :: vector
- 2. 将std :: vector复制到void指针
- 3. 将GpuMat行复制到std :: vector
- 4. 将成员复制到std :: vector
- 5. 不能删除std :: vector&std :: array?
- 6. std :: vector用于std :: array初始化
- 7. C++ - 如何将std :: priority_queue中的元素复制到std :: vector
- 8. 将System :: array转换为std :: vector
- 9. std :: vector <float> to std :: vector <glm::vecX>没有复制
- 10. 从std :: istreambuf_iterator <>复制到std :: vector <>
- 11. std :: vector到GLvoid *?
- 12. 将std :: map复制到C++的std :: set
- 13. std :: vector vs std :: insert
- 14. 不能使用ARC将NSArray复制到std :: vector使用ARC
- 15. std :: vector <std :: vector <T>> vs std :: vector <T*>
- 16. 方便地将std :: vector <unsigned char>复制到输入流(std :: istream)对象
- 17. 将元素从std :: vector复制到std :: set基于条件但崩溃
- 18. 问:std :: tuples/std :: array
- 19. 与性病``替换的std :: VECTOR` :: array`
- 20. 将std :: string复制到char *
- 21. std :: array <bool>的性能对比std :: vector <bool>
- 22. 为什么std :: vector和std :: array的C++ initializer_list行为不同?
- 23. iterate std :: vector <std :: vector <char>>?
- 24. 如何将std :: vector <const char*>复制到void *?
- 25. 将rapidjson :: Value的元素复制到std :: vector
- 26. std :: unique_locks的std :: vector向量
- 27. std :: bad_alloc错误与std :: vector
- 28. 是std :: unique_ptr移入std :: vector
- 29. std :: map初始化std :: vector
- 30. boost :: interprocess - std :: string与std :: vector
['std :: copy_n'](http://en.cppreference.com/w/cpp/algorithm/copy_n)。 –
你想复制或移动?这些是不同的事情。 – juanchopanza
根据':: std :: vector'包含什么,也可以使用':: std :: memcpy'和':: std :: memmove'。 – user1095108