C++ 具有关联值的枚举

C++ 具有关联值的枚举,c++,enums,C++,Enums,我有一个枚举运算符和不同的运算符 enum OperatorsTypes { Zero, Division, Equal, If, Minus, Multiplication, One, Plus, RandomNumber, Time }; 每个操作员有不同的联系人计数。例如,加上-2个联系人计数,随机数-零。 存储和使用与操作员关联的联系人计数的基本方法是什么 我考虑了3种选择: 1) 使用索引为ewual的数组到运算符类型,值=联系人计数 2) 使用以下声

我有一个枚举运算符和不同的运算符

enum OperatorsTypes
    {
        Zero, Division, Equal, If, Minus, Multiplication, One, Plus, RandomNumber, Time
    };
每个操作员有不同的联系人计数。例如,加上-2个联系人计数,随机数-零。 存储和使用与操作员关联的联系人计数的基本方法是什么

我考虑了3种选择:

1) 使用索引为ewual的数组到运算符类型,值=联系人计数

2) 使用以下声明:

enum OperatorsTypes
    {
        Zero = 0, Division = 12, Equal = 21, If = 32, Minus = 42, Multiplication = 52, One = 60, Plus = 72, RandomNumber = 81, Time = 90,
    };
其中第一个数字是Id号,第二个数字是联系人数。然后在一些静态方法中使用%operator,我可以从OperatorsTypes值中找到操作员的联系人计数

3) 在一些静态方法中使用开关

但所有这些方法都有缺点。。。(注意-我的代码必须是最快的)。
在C++中,有没有更好的方法来实现这两个任务?
template <OperatorsTypes o>
inline int GetOperatorContacts();

template<>
inline int GetOperatorContacts<Zero>() {return 0;}

template<>
inline int GetOperatorContacts<Minus>() {return 2;}

//...ect
模板
内联int GetOperatorContacts();
模板
内联int GetOperatorContacts(){return 0;}
模板
内联int GetOperatorContacts(){return 2;}
//…ect
在C++11中,您甚至可以创建这些constexpr,但我对此没有太多经验


然而,这可能是一个X对Y的问题。我猜你想要的信息比联系人的数量多得多,结构或类比枚举更合适。

有趣的选项,但仍然不完美,现在我只需要联系人计数。。。。我有更多的“运算符类型”,在这个问题中,有些运算符类型被更改了。。增加这么多结构是不愉快的