c ++如何避免case / switch语句

时间:2016-07-14 22:44:38

标签: c++

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

cond1 = ……. Evaluates to true or false

通过

cond30 = ……. Evaluates to true or false

on time series array element100 cond1和cond7为true,因此我想创建新变量,让它调用truecond并为其分配cond1和cond7。

truecond = cond1 AND cond7 

所以我可以查看过去这个组合已经过了多少时间。我可以为所有可能的组合编写case / switch语句,但这非常麻烦。有没有更有效的方法来解决这个问题? 我需要一个起点。感谢

2 个答案:

答案 0 :(得分:1)

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

看看std :: map。

答案 1 :(得分:0)

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

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

结合像HackSaw建议的地图,你可以得到一个你可以为每一步增加的所有组合的地图,从而看出翻转了多少次条件组合。