3

如何在不循环的情况下将数组的内容复制到 C++ 中的 std::vector?有一个很好的例子,如何简单地将数组的内容复制到向量中。

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

例如

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]);
4

2 回答 2

12

是的,使用迭代器:

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));

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

于 2013-07-04T07:32:50.633 回答
2

我相信这应该有效:

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

在另一个之前的答案中有更多信息: Best way to extract a subvector from a vector?

于 2013-07-04T07:36:49.037 回答