C++ 将向量复制到STL中列表的最佳方法?

C++ 将向量复制到STL中列表的最佳方法?,c++,stl,C++,Stl,使用迭代器遍历向量并复制到列表是复制的最佳方法。有什么建议吗?为什么要迭代而不使用标准复制算法 std::copy( vector.begin(), vector.end(), std::back_inserter( list ) ); 您可以尝试使用标题中的更复杂的内容,例如用于每个或复制。。。但在我看来,它们是一样的。如果要创建一个新列表,可以利用一个使用开始和结束迭代器的构造函数: std::list<SomeType> myList(v.begin(), v.end());

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

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

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

您可以尝试使用
标题中的更复杂的内容,例如
用于每个
复制
。。。但在我看来,它们是一样的。

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

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

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

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

std::list<SomeType> myList(v.begin(), v.end());
std::list myList(v.begin(),v.end());
但是,当附加到现有列表时,以下可能是小型数据集的最佳选择。我所说的“最优”是指最容易记住怎么做,也最容易理解。(这些都是主观陈述,我相信这取决于你的大脑是如何连接的。)


用于(unsigned i=0;i应该是std::copy而不是stl::copy,但在使用迭代器进行复制时,这是首选的方法。for_每种方法都是相同的。根据提供的迭代器,可以重载copy以提供更有效的复制机制,这通常是首选机制。这很有帮助,但您应该巧妙地在此答案中添加一些非代码以避免潜在的VLQ标志。它比std::copy(vector.begin()、vector.end()、std::back_inserter(list))快吗?引擎盖下的区别是什么?我怀疑它会慢一点,而且它可能能够更好地优化东西。标准库实现各不相同,所以很难说清楚。如果它对您很重要,请对它进行分析。
for ( unsigned i=0; i<v.size(); i++ ) myList.push_back(v[i]);
list.assign(vector.begin(), vector.end());