`
java-mans
  • 浏览: 11421552 次
文章分类
社区版块
存档分类
最新评论

GCC中实现c++的 foreach

 
阅读更多
boost 1.34中提供了FOREACH,只可惜这个实现也太丑陋了,根本没有实用价值。其实在gcc中实现foreach是相当简单的,因为 gcc 提供了typeof 关键字。
  这里提供一个实现,与boost不同,用的是 iterator 的概念。

  用法:

vector
<string>vec;
foreach(it,vec)
{
cout
<<*it;
}

实现:
template<classT>
structForeachTraits
{
typedef
typenameT::iteratoriterator;
};

template
<classT>
structForeachTraits
<constT>
{
typedef
typenameT::const_iteratoriterator;
};


#defineforeach(It,Container)
/
for(ForeachTraits<__typeof__(Container)>::iteratorIt=(Container).begin(),It##_e=(Container).end();It!=It##_e;++It)
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics