Как использовать функцию STL copy () для создания нового вектора из существующего вектора? - PullRequest
0 голосов
/ 07 марта 2012

Скажем, у меня есть std::vector с именем vec с 10 элементами, и я хочу создать новый std::vector, содержащий все элементы между (и включая) 2-м и 5-м элементами vec.Я могу видеть, как я мог бы написать цикл for, чтобы сделать это, но похоже, что STL copy() может сделать это более кратко.Но я не получаю итераторы: я видел, как вы можете использовать start() и end() для перебора вектора от его первого до последнего элемента, но как насчет ситуации выше, где я хочу что-то немного другое?Спасибо.

Ответы [ 2 ]

9 голосов
/ 07 марта 2012

Вам не нужно std::copy, чтобы создать новый vector с подмножеством первого.Вы можете достичь этого с помощью конструктора vector и его итераторов ( здесь ):

std::vector<myType> vec = ...;
std::vector<myType> other(vec.begin() + 1, vec.begin() + 5);

Вы должны быть уверены, что вы не превысите1009 *, или вы получите неопределенное поведение.

1 голос
/ 08 марта 2012

Константин прав в своем ответе - вам не нужно копировать.

Но в случае другой ситуации, когда вы хотите добавить элементы, вы можете использовать это:

std::vector< type > vec = ... ;
std::vector< type > othervec = ...;
std::copy( vec.begin(), vec.end(), std::back_inserter(othervec) );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...