C++0x 用基于范围的 for 循环替换 for(int i;;) 范围循环的方法

标签 c++ foreach for-loop c++11

所以我一直在使用 GCC 4.6 进入新的 C++,它现在具有基于范围的 for 循环。我发现这非常适合迭代数组和 vector 。

主要出于审美原因,我想知道是否有办法用它来代替标准

for(int i = min; i < max; i++) {}

用类似的东西

for(int& i : std::range(min, max)) {}

新的 C++ 标准中是否有内置的东西允许我这样做?还是我必须编写自己的范围/迭代器类?

最佳答案

我在任何地方都看不到它。但这将是相当微不足道的:

class range_iterator : public std::input_iterator<int, int> {
    int x;
public:
    range_iterator() {}
    range_iterator(int x) : x(x) {}
    range_iterator &operator++() { ++x; return *this; }
    bool operator==(const range_iterator &r) const { return x == r.x; }
    int operator*() const { return x; }
};
std::pair<range_iterator, range_iterator> range(int a, int b) {
    return std::make_pair(range_iterator(a), range_iterator(b));
}

应该可以解决问题(超出我的想象;可能需要稍微调整一下)。一对迭代器应该已经在范围内,所以我相信您不需要自己定义开始和结束。

关于C++0x 用基于范围的 for 循环替换 for(int i;;) 范围循环的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4930096/

相关文章:

c++ - 使用指向非静态成员函数的函数指针时,可以省略 "this"关键字吗

c++ - Qt::Concurrent 与成员函数映射

javascript - 如何修复页面上的商品推送到购物车的循环?

c++ - 链接器和图书馆员中的 VC++ 2012 Additional Dependencies 选项

asp.net - Foreach MVC3 成员(member)用户

c# - foreach 和 list.ForEach() 之间的闭包有何不同?

java - Eclemma:for 循环中缺少分支——这是什么意思?

xml - 在 SSIS 中保存/记录变量的值以供下次执行

r - 优化R中的for循环

android - C4DROID Makefile 问题