Как скопировать или перенести первые n
элементы std::vector<T>
в C++ 11 std::array<T, n>
?Копирование std :: vector в std :: array
ответ
Использование std::copy_n
std::array<T, N> arr;
std::copy_n(vec.begin(), N, arr.begin());
Edit: я не заметил, что бы вы спросили о перемещении элементов, а также. Для перемещения оберните исходный итератор в std::move_iterator
.
std::copy_n(std::make_move_iterator(v.begin()), N, arr.begin());
Здесь N is const? array
@notbad Да, 'N' is const (думаю, я должен был использовать' 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 «s живой пример.
Если вы хотите переместить, вместо этого, вы можете использовать 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 «s другой живой пример.
Как насчет 'n'? Не должно быть 'std :: copy (x.begin(), x.begin() + n, y.begin());'? – legends2k
Вместо использования переменной, такой как 'n', было бы лучше использовать' x.size() '? –
- 1. Копирование std :: stack в std :: vector
- 2. std :: vector versus std :: array в C++
- 3. Использовать std :: vector для std :: array initialization
- 4. std :: array или std :: vector from pointer
- 5. не может удалить std :: vector & std :: array?
- 6. std :: array vs std :: vector тонкая разница
- 7. std vector, копирование структуры данных
- 8. std :: vector vs normal array
- 9. C++ 11 std :: array vs static array vs std :: vector
- 10. Convert std :: vector to array
- 11. array to std :: vector conversion
- 12. Копирование элементов из std :: vector в std :: stack C++
- 13. Копирование элементов quickjson :: Значение в std :: vector
- 14. Копирование std :: vector: предпочитает назначение или std :: copy?
- 15. Что произошло, когда std :: vector = std :: vector?
- 16. std :: vector to array в CUDA
- 17. Эффективность C++-массивов vs std :: vector и std :: array
- 18. 3D Array to 3D std :: vector
- 19. Заполнение std vector
- 20. Замена std :: transform, вставка в std :: vector
- 21. Является std :: unique_ptr перемещен в std :: vector
- 22. Разбиение std :: wstring в std :: vector
- 23. Перераспределение в std :: vector после std :: vector.reserve()
- 24. Копировать элемент вложенного std :: vector в std :: vector
- 25. Std :: string to std :: array?
- 26. Вопрос: std :: tuples/std :: array
- 27. Фиксированный размер std :: vector
- 28. std :: vector as key в std :: set и std :: unordered_set
- 29. std :: vector <std :: vector <T>> vs std :: vector <T*>
- 30. Перекресток между std :: multimap и std :: vector?
['std :: copy_n'] (http://en.cppreference.com/w/cpp/algorithm/copy_n). –
Вы хотите скопировать или переместить? Это разные вещи. – juanchopanza
В зависимости от того, что ':: std :: vector' содержит,' :: std :: memcpy' и ':: std :: memmove' также могут быть использованы. – user1095108