将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_each
或copy
…但是在我看来,它们将会是相同的东西。