如何获得仅包含另一个向量的最后n个元素的向量?

时间:2012-07-30 16:02:43

标签: c++

我有std::vector,我想要一个单独的std::vector,只包含原始矢量的最后n个元素。除了一个接一个地插入整个矢量的循环外,还有一种更简洁的方法吗?

2 个答案:

答案 0 :(得分:20)

int n = 5;
std::vector<int> x = ...;
std::vector<int> y(x.end() - n, x.end())

当然,如果x.size()&lt; Ñ

为了详细说明,std::vector(与大多数标准库容器一样)有一个带有一对迭代器的构造函数。它使用第一个迭代器中的所有项填充向量,直到第二个迭代器。

答案 1 :(得分:1)

您可以使用两个迭代器构造函数直接构造copyVector

std::vector<int> original = ...;
std::vector<int>::iterator start = std::next(original.begin(), M);
std::vector<int> copyVector(start, original.end());

或使用std::vector的{​​{3}}方法:

std::vector<int>::iterator start = std::next(original.begin(), M);
std::vector<int> copyVector = ... ;
...
copyVector.assign(start, original.end());

其中M来自original.size()n