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

zeb*_*bra 15 c++

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

joh*_*ohn 20

int n = 5;
std::vector<int> x = ...;
std::vector<int> y(x.end() - n, x.end())
Run Code Online (Sandbox Code Playgroud)

当然,如果x.size()<n,这将崩溃并刻录

为了详细说明,vector(就像大多数STL容器一样)有一个带有一对迭代器的构造函数.它将使用第一个迭代器中的所有项填充向量,直到第二个迭代器.

  • 你可以证明这个`std:vector <int> y(x.end() - std :: min(x.size(),n),x.end());` (7认同)