将矢量复制到STL列表的最佳方法?

时间:2009-01-19 17:46:52

标签: c++ stl

使用迭代器迭代向量并将最佳复制方法复制到列表中。有什么建议吗?

5 个答案:

答案 0 :(得分:86)

为什么要迭代而不使用标准复制算法?

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

答案 1 :(得分:60)

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

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

如果您想要附加现有列表,Kasprzol的答案是完美的。

答案 2 :(得分:7)

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

答案 3 :(得分:1)

我喜欢这个建议新列表的建议。

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

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

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

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

另一个线程解决迭代器与索引(here)。在该线程中,所采用的答案基本上是首选迭代器,因为它们更通用。但是如果向量是最常用的容器类型,我认为专门研究这种简单算法是合理的。

答案 4 :(得分:0)

您可以尝试使用<algorithm>标题中较为棘手的内容,例如for_eachcopy ......但在我看来,这些内容相同。