假设我有一个名为 vec
的 std::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/