博客园  :: 首页  :: 新随笔  :: 订阅 订阅  :: 管理

C++自定义一个foreach宏,偷偷懒

Posted on 2013-02-18 20:53  扬名  阅读(1299)  评论(0编辑  收藏  举报
#define foreach(container,it) for(typeof((container).begin()) it = (container).begin();it!=(container).end();++it)

demo:

#include <iostream>
#include <vector>
#include <set>
#include <map>
#include <string>
using namespace std;
 
#define foreach(container,it) for(typeof((container).begin()) it = (container).begin();it!=(container).end();++it)
 
int main() {
    set<string> s;
    s.insert("w");
    s.insert("a");
    s.insert("n");
 
    foreach(s, it) {
        cout<<*it<<endl;
    }
 
    map<unsigned,string> m;
    m[0]="x";
    m[1]="w";
 
    foreach(m, it) {
        cout<<it->first<<","<<it->second<<endl;
    }
 
    return 0;
}

这种写法有点python哦。

 

详见:在C++中实现foreach循环,比for_each更简洁!