gpt4 book ai didi

c++ - 在 C++ 中迭代枚举类的常用方法是什么?

转载 作者:行者123 更新时间:2023-12-05 09:30:17 26 4
gpt4 key购买 nike

不幸的是,我发现我所有用于迭代常规 enum 的标准技术都不适用于 enum class,因为 enum classes 不会隐式转换为整数。

不是 How can I iterate over an enum? 的拷贝,因为我问的是枚举类(即:强类型枚举),而他们问的是常规枚举(即: 弱类型枚举)。

最佳答案

另一种选择是使用 C++20 范围来组成 enum 范围:

constexpr inline auto enum_range = [](auto front, auto back) {
return std::views::iota(std::to_underlying(front), std::to_underlying(back) + 1)
| std::views::transform([](auto e) { return decltype(front)(e); });
};

然后你可以像这样迭代enum:

enum class color { red, yellow, green, blue };
for (const auto e : enum_range(color::red, color::blue))
// ...

demo.

关于c++ - 在 C++ 中迭代枚举类的常用方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69762598/

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