如何遍历c ++列表中固定数量的元素

tar*_*far 4 c++ stl

我想在C++中遍历一个列表但是从最后一直到结束才到第五个.但我发现没有定义" - "运算符以便我可以使用

list<>::iterator j=i-5;
Run Code Online (Sandbox Code Playgroud)

我可以使用size()函数以某种方式保持计数等,但有任何其他直接的方式吗?

Ric*_*ett 6

Count是唯一可能无法以某种方式有效遍历列表的实用方法.

auto myEnd = std::advance(myList.end(),-5)
Run Code Online (Sandbox Code Playgroud)

但这只会遍历最后五个列表元素以达到您想要的点,因此它不会比大多数其他解决方案更快或更优雅.但是,使用整数循环确实需要保持整数计数和迭代器,这实际上只需要迭代器,所以在这方面它可能更好.

如果你<list>有一个O(1)计数,并且从末尾返回的距离很大,请使用整数循环,否则上面的结果很好.