我有一个std::vector
,我想要一个单独std::vector
的,只包含原始向量的最后 n 个元素。除了在整个向量上循环插入一个接一个之外,还有更清洁的方法吗?
问问题
13857 次
2 回答
27
int n = 5;
std::vector<int> x = ...;
std::vector<int> y(x.end() - n, x.end())
当然,如果 x.size() < n 这将崩溃并烧毁
稍微详细一点,std::vector
(像大多数标准库容器一样)有一个构造函数,它接受一对迭代器。它用从第一个迭代器到第二个迭代器的所有项目填充向量。
于 2012-07-30T16:05:13.183 回答
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
's assign方法:
std::vector<int>::iterator start = std::next(original.begin(), M);
std::vector<int> copyVector = ... ;
...
copyVector.assign(start, original.end());
其中M
从original.size()
和计算n
。
于 2012-07-30T16:07:33.877 回答