gpt4 book ai didi

c++ - 具有关联值的枚举

转载 作者:太空狗 更新时间:2023-10-29 23:05:26 26 4
gpt4 key购买 nike

我有一个包含不同运算符的枚举。

enum OperatorsTypes
{
Zero, Division, Equal, If, Minus, Multiplication, One, Plus, RandomNumber, Time
};

每个运算符(operator)都有不同的联系人计数。例如加 - 2 个联系人计数,随机数 - 零。存储和使用与操作者相关联的联系人计数的基本方法是什么。

我考虑了 3 个选项:

1) 使用索引等于 OperatorsTypes 且值 = 联系人计数的数组。

2) 使用以下声明:

enum OperatorsTypes
{
Zero = 0, Division = 12, Equal = 21, If = 32, Minus = 42, Multiplication = 52, One = 60, Plus = 72, RandomNumber = 81, Time = 90,
};

其中第一个数字是身份证号码,第二个数字是联系人计数。然后在某些静态方法中使用 % 运算符,我可以从 OperatorsTypes 值中找到运算符的联系人计数。

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

但是所有这些方法都有缺点......(注意 - 我的代码必须是最高速度)。在 C++ 中是否有更好的方法来完成这项任务,既美观又高速?

最佳答案

做你想做的事情的一种方法是内联模板函数:

template <OperatorsTypes o>
inline int GetOperatorContacts();

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

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

//...ect

在 C++11 中,您甚至可以创建这些 constexpr,但我对此没有太多经验。

但是,这可能是一个 X vs Y 问题。我猜你想要的不仅仅是联系人数量,还有更多的信息,而且结构或类比枚举更合适。

关于c++ - 具有关联值的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19455745/

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