【发布时间】:2019-10-21 19:45:58
【问题描述】:
在 C++ 中,我可以使用 reverse_iterator 向后循环容器的元素,例如 list。
如何迭代一定数量的元素?还没到起点?此代码有效,但我觉得有更好的方法。
std::list<int> mylist{1,2,3,4,5};
int cnt = 3;
for (auto rit = mylist.rbegin(); rit != mylist.rend(); ++rit) {
if (cnt == 0) break;
std::cout << *rit << " ";
--cnt;
}
预期输出{5, 4, 3}。
【问题讨论】:
-
至少,您的解决方案是稳健的。如果容器中的元素少于 3 个,它甚至不会失败。如果您使用
mylist.rbegin() + 3作为结束条件,则不会出现这种情况... -
我可以添加范围检查
-
您已有的解决方案也适用于所有迭代器类型。
标签: c++ list reverse-iterator