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]);
答案 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?