c++ 如何避免大小写/切换语句

c++ How to avoid case/switch statement

本文关键字:语句 大小写 何避免 c++      更新时间:2023-10-16

我有一个时间序列数组。在每个时间序列元素上,许多条件的计算结果可能为 true 或 false。我想评估过去特定组合的次数。例如,假设我有以下条件:

cond1 = ……. Evaluates to true or false

通过

cond30 = ……. Evaluates to true or false

在时间序列数组元素 element100 上,cond1 和 cond7 为真,因此我想创建新变量,让我们称它为 truecond 并将 cond1 和 cond7 分配给它。

truecond = cond1 AND cond7 

所以我可以检查一下过去有多少次这种组合是正确的。我可以为所有可能的组合编写一个 case/switch 语句,但这非常麻烦。有没有更有效的方法来解决这个问题?我需要一个起点。谢谢

当基本键和值可计算时(例如,通过在数据流中查找数据),存储数据的更好方法是将其存储为字典中的键值对。

看看 std::map。

您可以将其编码为二进制。 对于每个条件,给它一个 2 的幂,这样你每个布尔组合都有一个唯一的数字。 即

truecond = cond1 AND cond7 => 2**0 + 2**6 = 65

结合像HackSaw建议的地图,您可以拥有所有组合的地图,您可以为每个步骤递增这些组合,从而查看条件组合被翻转了多少次。