迭代c ++中的非连续枚举元素

sta*_*low 6 c++ enums

有许多方法可以迭代连续的枚举

enum Animal {Cat, Dog, Dolphin}
Run Code Online (Sandbox Code Playgroud)

但有没有一种方便简单的方法来迭代非连续的枚举元素

enum Animal {Cat = 0, Dog = 5, Dolphin = 8}
Run Code Online (Sandbox Code Playgroud)

Mat*_*son 3

对此的简短回答是“不”。

您可以制作一个表格animals,然后在 上使用范围循环animals

这是一个完整的“演示”:

#include <iostream>

using namespace std;

enum Animal {Cat = 0, Dog = 5, Dolphin = 8};

int main()
{
    Animal animals[] = { Cat, Dog, Dolphin };

    for(Animal a : animals) cout << a << endl;
}
Run Code Online (Sandbox Code Playgroud)

输出将是:

0
5
8
Run Code Online (Sandbox Code Playgroud)