ForEach中的最后一个元素

问题描述:

C++是否有预先构建的方法来确定您在foreach循环中的哪个元素,或者是否有方法来确定您是否在最后一个元素上?或者我必须用计数器手动执行此操作吗?ForEach中的最后一个元素

+0

如果您需要知道每个元素(或任何元素)的索引,则应该使用for循环。 – 2012-03-15 23:02:56

+0

为什么你需要知道这一点? – svick 2012-03-15 23:24:05

不,没有这种内置的方式。一般来说,也不可能存在迭代器,因为迭代器不需要知道它们最终“几乎”。

+0

啊,我明白了。谢谢:) – Jon 2012-03-15 23:02:47

+0

对于大多数迭代器来说很简单:'if(it + 1 == end)' – 2012-03-19 15:57:03

如果你发现自己需要的索引你可能会更好过使用普通的for循环

+0

补充它。我只是懒得重写我的循环!谢谢:) – Jon 2012-03-15 23:02:28

如果你需要的最后一个元素,如何使用另一个迭代器来存储它你去到下一个项目中的容器之前?如果在获取下一个元素(递增或递减迭代器)之前将两者都设置为开始和结束时循环,则将上一个迭代器设置为当前,然后获取下一个。

事情是这样的:

container current::iterator; 
container last::iterator; 
current = container.first(); 
last = current; // or contianer.first(); 
while (current is valid) 
{ 
    // do something 
    last = current; 
    // get the next item 
    current = container.next(); // or current++; 
           // depending upon container or 
           // iterator 
} 

这样,你就不必改写你的循环,但是你需要检查,以确保您的容器是不是在此之前空。

+1

只是缩进代码四个空格(有一个按钮,它寻找'{}') – 2012-03-15 23:24:22

+0

谢谢。我的编辑有点生锈。 – Glenn 2012-03-15 23:51:28