最佳答案
我有一个循环的代码块,其中我循环遍历 enum class
的所有成员。
与新的 range-based for
相比,我目前使用的 for
循环看起来非常笨拙。
有没有什么方法可以利用新的 C + + 11特性来减少我当前 for
循环的冗长?
我想改进的现行守则:
enum class COLOR
{
Blue,
Red,
Green,
Purple,
First=Blue,
Last=Purple
};
inline COLOR operator++( COLOR& x ) { return x = (COLOR)(((int)(x) + 1)); }
int main(int argc, char** argv)
{
// any way to improve the next line with range-based for?
for( COLOR c=COLOR::First; c!=COLOR::Last; ++c )
{
// do work
}
return 0;
}
换句话说,如果我能做这样的事情就好了:
for( const auto& c : COLOR )
{
// do work
}