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

Pao*_*aJ. 3 c++ stl

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

Ste*_*sop 7

std::list<T> newlist(oldlist.begin(), std::prev(oldlist.end(), 5));
Run Code Online (Sandbox Code Playgroud)

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);
Run Code Online (Sandbox Code Playgroud)

无论哪种方式,你都有责任确保这一点oldlist.size() >= 5.既不std::prevstd::advance也不是为你做的.