C ++是否有预先构建的方法来识别你在foreach循环中使用的元素,或者是否有办法确定你是否在最后一个元素上?或者我必须用计数器手动完成吗?
答案 0 :(得分:7)
不,没有这种内置方式。一般情况下也不可能有迭代器,因为迭代器不需要知道它们“几乎”在最后。
答案 1 :(得分:4)
如果您发现自己需要索引,最好使用常规for循环
答案 2 :(得分:3)
如果你需要最后一个元素,在转到容器中的下一个项目之前,如何使用另一个迭代器来存储它?如果在获得下一个元素(递增或递减迭代器)之前将两者都设置为循环的开始和结束,则将最后的迭代器设置为当前,然后获取下一个。
这样的事情:
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
}
这样你就不必重写你的循环,但你需要检查以确保你的容器在此之前不是空的。