gpt4 book ai didi

c++ - 如何迭代枚举?

转载 作者:IT老高 更新时间:2023-10-28 11:25:02 25 4
gpt4 key购买 nike

我刚刚注意到您不能在 enum 上使用标准数学运算符,例如 +++=

那么,遍历 C++ enum 中所有值的最佳方法是什么?

最佳答案

典型的方式如下:

enum Foo {
One,
Two,
Three,
Last
};

for ( int fooInt = One; fooInt != Last; fooInt++ )
{
Foo foo = static_cast<Foo>(fooInt);
// ...
}

请注意,枚举 Last 旨在被迭代跳过。利用这个“假” Last 枚举,您不必在每次想要添加新枚举时将 for 循环中的终止条件更新为最后一个“真实”枚举。如果您想稍后添加更多枚举,只需在 Last 之前添加它们。此示例中的循环仍然有效。

当然,如果指定了枚举值,就会出现问题:

enum Foo {
One = 1,
Two = 9,
Three = 4,
Last
};

这说明枚举并不是真的要迭代。处理枚举的典型方法是在 switch 语句中使用它。

switch ( foo )
{
case One:
// ..
break;
case Two: // intentional fall-through
case Three:
// ..
break;
case Four:
// ..
break;
default:
assert( ! "Invalid Foo enum value" );
break;
}

如果您真的想枚举,请将枚举值填充到 vector 中并对其进行迭代。这也将正确处理指定的枚举值。

关于c++ - 如何迭代枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/261963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com