3

如何从现有的 std::list 创建新的 std::list 并获取前 n-5 个元素?n 是现有列表(列表)的大小

4

1 回答 1

7
std::list<T> newlist(oldlist.begin(), std::prev(oldlist.end(), 5));

其中T是旧列表的值类型。

std::prev在 C++11 中是新的,但如果你没有它,你可以使用它std::advance

std::list<T>::const_iterator end = oldlist.end();
std::advance(end, -5);
std::list<T> newlist(oldlist.begin(), end);

无论哪种方式,您都有责任确保oldlist.size() >= 5. 也不std::prev适合std::advance你。

于 2013-02-06T18:15:08.317 回答