2016-07-14 13 views
-3

私は時系列配列を持っています。各時系列要素には、真または偽と評価されるいくつかの条件が含まれます。私は過去に特定の組み合わせが何回真実であったかを評価したいと思います。たとえばのは、私は、以下の条件を持っていると仮定してみましょう:C++ case/switch文を避ける方法

cond1 = ……. Evaluates to true or false 

時系列アレイelement100のCOND1とcond7上

cond30 = ……. Evaluates to true or false 

スルーは真である、したがって、私は新しい変数を作成したい、それがtruecond呼び出すとCOND1を割り当てることができますそれにcond7。

truecond = cond1 AND cond7 

このように、この組み合わせの過去の経過時間を確認することができます。すべての可能な組み合わせに対してcase/switch文を書くことができますが、それは非常に面倒です。この問題に対するより効率的なアプローチがありますか? 私は出発点が必要です。ありがとう

+2

'std :: map'を使って各条件を保存することができます。 –

+0

条件は何ですか?彼らは要素の属性ですか?私たちにいくつかのコードを教えてください – pm100

+0

ギアヘッド、私はあなたがおそらく*(今のところ)* **この言葉を口にした**を再考すべきであることを示唆したいと思います。あなたが今書いたことで、あなたは基本的に、「あなたが書いた質問で本当に具体的に対処していない**基本的な目的**」の 'condN'変数の実装を想定していました。あなたはまた、私たちに何らかのソースコードを提供していません。*あなたの現在の「それをどうするか」の前提から戻してください。そして、「まさにあなたが目指しているものは何ですか? 」と述べた。おそらく、** condN変数を含んでいない**解決策はここに潜んでいます... –

答えて

1

基本的なキーと値が計算可能なとき(データストリームでそれを調べることによって)データを格納するより良い方法は、キー値のペアとして辞書に格納することです。

std :: mapを見てください。

0

これをバイナリとしてコーディングすることができます。各条件に対して、2の累乗を与えます。これにより、各ブールコンボごとに固有の数が得られます。私。弓のこのようなマップと組み合わせ

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

あなたは、あなたがステップごとに増分することができ、すべてのコンボのマップを持っているので、条件の組み合わせが反転した回数を確認することができ、提案しました。

+0

ご回答いただきありがとうございます。これは私に出発点を与える。 – gearhead

関連する問題