【问题标题】:Last Element in ForEachForEach 中的最后一个元素
【发布时间】:2012-03-15 22:59:57
【问题描述】:

C++ 是否有预先构建的方法来识别您在 foreach 循环中位于哪个元素上,或者是否有一种方法可以识别您是否位于最后一个元素上?还是我必须用计数器手动完成?

【问题讨论】:

  • 如果您需要知道每个元素(或任何元素)的索引,您应该只使用 for 循环。
  • 你为什么需要知道这些?

标签: c++ foreach


【解决方案1】:

不,没有这样的内置方式。一般情况下也不可能有迭代器,因为迭代器不需要知道它们最后“几乎”。

【讨论】:

  • 对于大多数迭代器来说这很容易:if (it + 1 == end)
【解决方案2】:

如果您发现自己需要索引,最好使用常规 for 循环

【讨论】:

  • 该死。我只是懒得重写我的循环!谢谢你:)
【解决方案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
}

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

【讨论】:

  • 只需将代码缩进四个空格(有一个按钮可以查找{}
猜你喜欢
  • 2011-09-06
  • 2012-02-25
  • 2017-04-08
  • 1970-01-01
  • 2016-11-26
  • 1970-01-01
  • 1970-01-01
  • 2014-05-24
  • 1970-01-01
相关资源
最近更新 更多