Итерируется через вектор, используя итератор, и копирует в список наиболее оптимальный метод копирования. Любые рекомендации?
Лучший способ скопировать вектор в список в STL?
Ответ 1
Зачем вам повторять и не использовать стандартный алгоритм копирования?
std::copy( vector.begin(), vector.end(), std::back_inserter( list ) );
Ответ 2
Если вы создаете новый список, вы можете воспользоваться конструктором, который запускает и заканчивает итераторы:
std::list<SomeType> myList(v.begin(), v.end());
Ответ Kasprzol идеально подходит, если у вас есть существующий список, к которому вы хотите добавить.
Ответ 3
list.assign(vector.begin(), vector.end());
Ответ 4
Мне нравится это предложение для создания нового списка.
std::list<SomeType> myList(v.begin(), v.end());
Но при добавлении к существующему списку для небольших наборов данных может быть оптимальным. Под "оптимальным" я имею в виду, что легче всего запомнить, как это сделать и проще всего понять. (Это субъективные утверждения, я уверен, что это зависит от того, как ваш мозг подключен.)
for ( unsigned i=0; i<v.size(); i++ ) myList.push_back(v[i]);
Использование итераторов на векторах во многих случаях может быть слишком педантичным. Простое индексирование работает нормально.
Другой поток обращается к итераторам против индексов (здесь). В этом потоке принятый ответ в основном предпочел итераторы, потому что они более общие. Но если векторы являются наиболее часто используемым типом контейнера, я считаю целесообразным специализировать этот простой алгоритм.
Ответ 5
Вы можете попытаться использовать более сложные вещи из заголовка <algorithm>
, например for_each
или copy
... но они, по моему мнению, будут одинаковыми.