将vector复制到STL列表的最佳方法是什么?

使用迭代器迭代遍历vector,并复制到列表的最佳复制方法。 任何build议?

为什么你会迭代,而不是使用标准的复制algorithm?

std::copy( vector.begin(), vector.end(), std::back_inserter( list ) ); 

如果你正在创build一个新列表,你可以利用一个构造函数来开始和结束迭代器:

 std::list<SomeType> myList(v.begin(), v.end()); 

Kasprzol的答案是完美的,如果你有一个现有的列表,你想追加到。

 list.assign(vector.begin(), vector.end()); 

我喜欢这个build议来build立一个新的列表。

 std::list<SomeType> myList(v.begin(), v.end()); 

但是在附加到现有列表时,以下可能对于小数据集是最佳的。 所谓“最佳”,我的意思是记住如何做和最容易理解是最容易的。 (这些是主观的陈述,我相信这取决于你的大脑是如何连线的。)

 for ( unsigned i=0; i<v.size(); i++ ) myList.push_back(v[i]); 

在vector上使用迭代器在许多情况下可能过于迂腐。 简单的索引通常工作正常。

另一个线程处理迭代器与索引( 这里 )。 在这个线程中,所采用的答案基本上是首选迭代器,因为它们更通用。 但是,如果向量是最常用的容器types,我认为专门这种简单的algorithm是合理的。

你可以尝试从<algorithm>头文件中使用更复杂的东西,例如for_eachcopy …但是在我看来,它们将会是相同的东西。