2016-07-14 116 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