gzyueqian
13352868059
首页 > 新闻中心 > > 正文

foreach的c++实现

更新时间: 2012-02-11 10:13:57来源: 粤嵌教育浏览量:4538

    C#和java中都有foreach,foreach可以减少代码的长度和复杂性让程序更为简单。

    int main() {
    int a[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
    vector<int> v(a, a + sizeof(a) / sizeof(a[0]));
    foreach (int x, v) {
        cout << x << endl;
    }
    return 0;
    }

    c++的实现方法为(copy QT代码)

    template <typename T>
    class ForeachContainer {
    public:
    inline ForeachContainer(const T& t) : brk(0), i(t.begin()), e(t.end()) { }
    int brk;
    typename T::const_iterator i, e;
    };
 
    #define FOREACH(variable, container)                                  \
    for (ForeachContainer<__typeof__(container)> _container_(container);  \
     !_container_.brk && _container_.i != _container_.e;              \
     __extension__  ({ ++_container_.brk; ++_container_.i; }))        \
    for (variable = *_container_.i;; __extension__ ({--_container_.brk; break;}))
 
    #define foreach FOREACH

免费预约试听课