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