如何知道枚举类已排序

问题描述 投票:0回答:1

如何知道枚举类已排序,例如:


// is sorted:
enum class data
{
    type1 = 2,
    type2 = 3,
    type3 = 4,
    type4 = 5,
    type5 = 6
};
// not sorted:
enum class data
{
    type1 = 3,
    type2 = 2,
    type3 = 4
    type4 = 6,
    type5 = 5
};

找到一种方法让代码知道枚举类是否已排序。因为我想为用户提供一个界面。该接口将帮助用户从枚举定义中一一循环枚举元素。但是如果枚举类没有排序,我无法帮助用户执行这种循环并抛出错误或给出编译错误。例如,我有获取枚举类列表的接口:

template<typename Enum>
std::vector<Enum> getEnumList(Enum from, Enum to);

for(const auto& enum : getEnumList(data::type2, data::type4)
{
    /// loop the data type: type2, type3, type4
}

如果枚举已排序,我可以获得正确的循环:type2、type3、type4 但如果枚举没有排序,循环就不是我想要的。

所以,我想知道枚举是否已排序,如果没有,我将在接口中抛出错误:getEnumList。

c++ enum-class
1个回答
0
投票

我想为用户提供一个界面。界面会有所帮助 用户从枚举定义中一一循环枚举元素。但 如果枚举类未排序,我无法帮助用户执行此操作 of 循环并抛出错误或给出编译错误。

好的,所以在内部枚举总是排序的。 您不必“帮助”用户循环/访问枚举的顺序元素。每个枚举值对应一个值,如 1、2 或 ...
2 对应的那个后面的枚举值就是 3 对应的那个。总是。您甚至可以增加枚举值来获取“下一个”...

这是否可以帮助您理解为什么您的问题对于了解枚举如何工作的人来说很奇怪?

如果您仍然遇到同样的问题,您应该更新您的问题以帮助我们理解为什么枚举定义的排序如此重要(即使我们认为它不是)。

© www.soinside.com 2019 - 2024. All rights reserved.