相关疑难解决方法(0)

我如何迭代枚举?

我只是注意到你不能在枚举上使用标准数学运算符,如++或+ =

那么迭代C++枚举中所有值的最佳方法是什么?

c++ enums

282
推荐指数
12
解决办法
29万
查看次数

允许使用枚举类的基于范围的For?

我有一个经常出现的代码块,我循环遍历所有成员enum class.

for与新的相比,我目前使用的循环看起来非常笨拙range-based 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;
}
Run Code Online (Sandbox Code Playgroud)

换句话说,如果我可以做以下事情会很好:

for( const auto& c : COLOR )
{
  // …
Run Code Online (Sandbox Code Playgroud)

c++ enums for-loop c++11

65
推荐指数
5
解决办法
4万
查看次数

标签 统计

c++ ×2

enums ×2

c++11 ×1

for-loop ×1