イテレーターを使用してベクトルを反復処理し、リストにコピーするのが最も最適なコピー方法です。何かお勧めですか?
なぜ反復し、標準のコピーアルゴリズムを使用しないのですか?
std::copy( vector.begin(), vector.end(), std::back_inserter( list ) );
新しいリストを作成する場合は、開始反復子と終了反復子を使用するコンストラクターを利用できます。
std::list<SomeType> myList(v.begin(), v.end());
追加する既存のリストがある場合、Kasprzolの答えは完璧です。
list.assign(vector.begin(), vector.end());
新しいリストを作成するためのこの提案が好きです。
std::list<SomeType> myList(v.begin(), v.end());
ただし、既存のリストに追加する場合、小規模なデータセットには以下が最適な場合があります。 「最適」とは、実行する方法を覚えるのが最も簡単で、理解するのが最も簡単であることを意味します。 (これらは主観的な発言ですが、あなたの脳がどのように配線されているかによります)
for ( unsigned i=0; i<v.size(); i++ ) myList.Push_back(v[i]);
ベクトルでイテレータを使用すると、多くの場合、非常に面倒になることがあります。通常、単純なインデックス付けは問題なく機能します。
別のスレッドは、イテレータとインデックス( ここ )を扱います。そのスレッドでは、取られた回答は基本的に反復子がより一般的であるため、基本的に優先されます。しかし、ベクトルが最も一般的に使用されるコンテナータイプである場合、この種の単純なアルゴリズムを特化することは妥当だと思います。
<algorithm>
ヘッダーからより複雑なもの、たとえばfor_each
またはcopy
...を使用することもできますが、私の意見では同じものになります。