一个从 list<T> 转换为 vector<T> 的衬垫

新手上路,请多包涵

是否有一个单线可以将 list<T> 转换为 vector<T>

谷歌搜索返回给我很多使用手动、冗长转换的结果,这让我呕吐。我们是否应该费尽心思去做像列表到向量转换这样简单的事情?

原文由 Graviton 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

您只能使用列表中的所有元素创建一个新向量:

 std::vector<T> v{ std::begin(l), std::end(l) };

其中 lstd::list<T> 。这会将列表中的所有元素复制到向量中。

从 C++11 开始,如果您不再需要原始列表,这可以提高效率。您可以将所有元素移动到向量中,而不是复制:

 std::vector<T> v{ std::make_move_iterator(std::begin(l)),
                  std::make_move_iterator(std::end(l)) };

原文由 Björn Pollex 发布,翻译遵循 CC BY-SA 3.0 许可协议

另一种简单的方法:

 list<int> l {1, 2, 3, 4};
vector<int> v(l.begin(), l.end());

原文由 A-Sharabiani 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题