UOJ Logo kde的博客

博客

用宏山寨一个range-for

2017-04-22 16:11:19 By kde
#define foreach(var,con) for(typeof(con.begin()) __ITER__=con.begin(),__END__=con.end();__ITER__!=__END__;++__ITER__)if(bool __FLAG__=1)for(typeof(*__ITER__) &var=*__ITER__;__FLAG__;__FLAG__=0)

似乎很不错的样子…… 性能也还不错 测试代码:

int n;std::cin>>n;
std::vector<int> vec;
for(int i=1;i<=n;++i) {
    vec.push_back(i);
}
int sum=0;
foreach(x,vec) {
//for(auto x : vec) {
    sum+=x;
}
std::cout<<sum<<'\n';

(分别为range-for和山寨的foreach)

评论

riteme
似乎并不能支持const容器吧,可能还需要加点特判

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。