使用迭代器迭代向量并将最佳复制方法复制到列表中。有什么建议吗?
答案 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_each
或copy
......但在我看来,这些内容相同。