如何从现有列表创建新的列表,采用前n-5个元素?

时间:2013-02-06 18:12:09

标签: c++ stl

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

1 个答案:

答案 0 :(得分: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() >= 5std::prevstd::advance都没有为您做到这一点。