2016-07-14 81 views
-3

我有一个时间序列数组。在每个时间序列元素上可能会评估为真或假的许多条件。我想评估一个特定组合在过去有多少次是真实的。例如,让我们假设我有以下条件:C++如何避免case/switch语句

cond1 = ……. Evaluates to true or false 

cond30 = ……. Evaluates to true or false 

时间序列排列element100 COND1和cond7是真实的,所以我要创建新的变量可以称之为truecond并分配COND1并cond7它。

truecond = cond1 AND cond7 

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

+2

你可以使用'std :: map'来存储每个条件。 –

+0

有什么条件?他们是元素的属性?给我们一些代码 – pm100

+0

减速机,我想建议你应该重新考虑你如何*(至今)**措辞**这个问题。在你现在写的东西中,你基本上已经*假定*一个''condN'变量实现了“一个**基本目标**,你在写作的问题中确实没有具体说明。您还没有向我们提供任何*源代码*请退出*(可以这么说)*从“您目前对'如何做'的假设',并告诉我们更多关于”您究竟瞄准什么去做。”很可能,**不涉及'condN'变量的解决方案就是潜伏在这里...... –

回答

1

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

看看std :: map。

0

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

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

与地图状钢锯合并的建议,那么你可以有地图,你可以增加每个步骤,因此看到的条件的组合多少次被翻转所有的连击。

+0

谢谢大家的回复。这给了我一个起点。 – gearhead