如何从现有列表中取出前n-5个元素创建新的列表?

3
如何从现有的std::list中取出前n-5个元素创建新的std::list? 其中,n是现有列表(list)的大小。
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都不会为你做这件事。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接