循环整数范围的最简洁方法

新手上路,请多包涵

由于 C++11 引入了基于范围的 for 循环( c++11 中的基于范围的 for ),那么在整数范围内表示循环的最简洁方法是什么?

代替

for (int i=0; i<n; ++i)

我想写一些类似的东西

for (int i : range(0,n))

新标准是否支持这种类型的东西?

更新:本文描述了如何在 C++11 中实现范围生成器: Generator in C++

原文由 user1101674 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 602
2 个回答

虽然 C++11 不提供,但您可以编写自己的视图或使用 boost 中的视图:

 #include <boost/range/irange.hpp>
#include <iostream>

int main(int argc, char **argv)
{
    for (auto i : boost::irange(1, 10))
        std::cout << i << "\n";
}

此外, Boost.Range 包含一些更有趣的范围,与新的 for 循环结合使用会非常有用。例如,您可以获得 反向视图

原文由 ixSci 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您不介意以相反的顺序执行循环,则可以替换

for (int i=0; i<n; ++i)

用更简单的

for (int i=n; i--;)

原文由 Mike Redrobe 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题