Questa è una piccola applicazione C ++ (e la tabella non è enorme neanche), quindi se possibile vorrei evitare di includere qualcosa di diverso da STL (e boost).
Quindi al problema:
Ho una tabella di corrispondenza predefinita delle condizioni di input e output. Questa tabella contiene 4 variabili di input (stati) e la loro combinazione porta a 1 variabile di output. In sostanza:
output = f(a,b,c,d)
vale a dire. "la variabile di uscita è una funzione di 4 variabili di input"
- La variabile di uscita è un allarme e può assumere uno dei 3 stati (ok, warning, fault).
- "A" può assumere 1 di 3 stati (ad esempio 0 o 1 o 2). Allo stesso modo
- "B" può assumere 1 di 5 stati
- "C" può assumere 1 di 3 stati
- "D" può assumere 1 di 2 stati
Voglio fornire i valori alle variabili di input e ottenere la variabile di output in cambio da questa tabella di ricerca.
La tabella potrebbe apparire un po 'come questa:
A | B | C | D | output
----------------------
1 | 3 | 0 | 1 | ok
0 | 2 | 1 | 2 | fault
0 | 0 | 0 | 0 | warning
... e così via. Quindi la tabella non avrà più di 150 voci (un po 'di ottimizzazione l'ha aiutato) che non è enorme, ma è ancora troppo grande se provo a creare if-statid annidate. Cosa posso fare per evitare enormi dichiarazioni di if
?
Quello che sto cercando è uno schema di progettazione, o qualche buon riferimento su cui leggere.
Ad esempio una specie di map
che può contenere 4 chiavi e 1 valore sarebbe l'ideale.
Qualcosa come la mappa sarebbe probabilmente l'ideale.