c++ - 如何使用 STL 的 copy() 从现有 vector 创建新 vector ?

标签 c++ stl

假设我有一个名为 vecstd::vector 有 10 个元素,我想创建一个包含所有元素的新 std::vector vec 的第 2 个和第 5 个元素之间(包括在内)的元素。我可以看到如何编写 for 循环来执行此操作,但看起来 STL 的 copy() 可以更简洁地执行此操作。但我并没有真正得到迭代器:我已经看到了如何使用 start()end() 从 vector 的第一个元素到最后一个元素迭代它,但是上面的情况呢,我想要稍微不同的东西?谢谢。

最佳答案

您不需要 std::copy 来创建一个包含第一个 vector 子集的新 vector。您可以使用 vector 的构造函数及其迭代器 (doc here) 实现此目的:

std::vector<myType> vec = ...;
std::vector<myType> other(vec.begin() + 1, vec.begin() + 5);

不过您必须确定,您没有超出vector 的限制,否则您将得到未定义的行为。

关于c++ - 如何使用 STL 的 copy() 从现有 vector 创建新 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9604450/

相关文章:

c++ - C++ 中具有多态性的静态方法

c++ - 在 VS、UNIX/Linux 中删除 STL 迭代器后会发生什么情况?

c++ - 搜索具有下限和上限的 map <pair<int, int>, ...>

c++ - 将两个键与 std::map 一起使用的最佳方法是什么?

c++ - CAsyncSocket 和 ThreadPool 问题

c++ - 如何将 Crypto++ 包含到 VS 项目中

c++ - 在 c++11 中,线程是否类似于 node.js/javascript 回调?

c++ - 在变量中存储异常的正确方法

c++ - multimap upper_bound 返回混淆

c++ - std::map<tstring<std::map<tstring, unsigned int>> 赋值失败