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