Is iterating through the vector using an iterator and copying to a list the most optimal method of copying. Any recommendations?
Why would you iterate and not use the standard copy algorithm?
std::copy( vector.begin(), vector.end(), std::back_inserter( list ) );
You can try to use trickier things from the <algorithm>
header, for example for_each
or copy
... but they would amount to the same thing, in my opinion.
If you're making a new list, you can take advantage of a constructor that takes begin and end iterators:
std::list<SomeType> myList(v.begin(), v.end());
Kasprzol's answer is perfect if you have an existing list you want to append to.
I like this suggestion for constructing a new list.
std::list<SomeType> myList(v.begin(), v.end());
But when appending to an existing list, the following may be optimal for small data sets. By "optimal", I mean that it is easiest to remember how to do and easiest to understand. (These are subjective statements, I'm sure it depends on how your brain is wired.)
for ( unsigned i=0; i<v.size(); i++ ) myList.push_back(v[i]);
Using iterators on vectors may be overly pedantic in many cases. Simple indexing usually works fine.
Another thread addresses iterators vs. indices (here). In that thread, the taken answer basically preferred iterators because they are more generic. But if vectors are the most commonly used container type, I think it is reasonable to specialize this kind of simple algorithm.