首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C++中迭代枚举类的常用方法是什么?

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

Stack Overflow用户
提问于 2021-10-29 01:23:00
回答 1查看 1.8K关注 0票数 2

不幸的是,我在常规enum上迭代的所有标准技术都不能在enum classes上工作,因为枚举类不会隐式转换为整数。

而不是我如何在枚举上迭代?的复制,因为我在询问enum class (即:强类型枚举),而他们询问的是常规enum (即:弱类型枚举)。

EN

回答 1

Stack Overflow用户

发布于 2021-10-29 01:58:49

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

代码语言:javascript
复制
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

代码语言:javascript
复制
enum class color { red, yellow, green, blue };
for (const auto e : enum_range(color::red, color::blue))
  // ...

演示。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69762598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档