是否可以使用数组副本复制部分向量?

时间:2013-07-04 07:30:39

标签: c++ vector stl

How do you copy the contents of an array to a std::vector in C++ without looping?有一个很好的例子,可以简单地将数组的内容复制到矢量中。

您可以使用相同的技术将部分矢量复制到另一个矢量中吗?

e.g。

vector<int> v;

// ...v has some number of elements and we're interested in an 
// arbitrary number (y) from an arbitrary start point (x)...

vector<int> v2(&v[x], &v[x + y]);

2 个答案:

答案 0 :(得分:11)

是的,使用迭代器:

vector<int> v2(v.begin() + x, v.begin() + x + y);

如果您愿意,可以使它更通用:

vector<int> v2(std::next(std::begin(v), x), std::next(std::begin(v), x + y));

指针版本(数组为两个参数进行衰减)首先起作用的原因是指针可以被视为随机访问迭代器。

答案 1 :(得分:2)

我相信这应该有效:

vector<int> v2( v.begin() + x, v.begin() + x + y );

此另一个中有更多信息,上一个答案:Best way to extract a subvector from a vector?