#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哦。