C++ Long switch-Anweisung oder suchen Sie mit Karte?

In meinem C++ - Anwendung, habe ich einige Werte, die als codes vertreten andere Werte. Übersetzen des codes, ich habe debating zwischen der Verwendung einer switch-Anweisung oder eine stl-map. Der switch würde wie folgt Aussehen:

int code;
int value;
switch(code)
{
case 1:
    value = 10;
    break;
case 2:
    value = 15;
    break;
}

Die Karte wäre ein stl::map<int, int> und übersetzung wäre eine einfache lookup mit dem code als Schlüssel verwendet Wert.

Welches ist besser/effizienter/Reiniger/akzeptiert? Warum?

  • value = 5 * (code + 1);
  • Ausgezeichnet. Es sei denn, Sie sind nicht die eigentlichen Werte...
  • +1 für eine interessante Frage.
  • Wie viele verschiedene übersetzungen benötigen Sie? Das wird eine tiefgreifende Wirkung auf die Entscheidungsfindung, die gehen auf. DH. Wenn Sie nur Fall 1 und 2 ist, sollten Sie wahrscheinlich ersetzen Sie es mit einer if-Anweisung.
  • Setzen Sie die Auswahl-Logik in eine eigene Funktion, damit können Sie one-liner case 1: return 10; für jede option. Nicht zu brechen, reduziert auch das Risiko von Fehlern.
  • Wenn die Ganzzahlen werden in einer Datei gespeichert, wie es bereits erwähnt wurde, in einem Kommentar, den ich schreiben würde, ein Programm zu generieren, die lookup-Tabelle aus diesen Dateien in form von .h/.c-Dateien, und kompilieren Sie es in das Projekt. Die Adressen der Wartung Problem. Wieder,, wenn der Wertebereich ist ziemlich begrenzt statische array-lookup-Tabelle ist die Schnellste Lösung. Ansonsten haben Sie, um code zu generieren, das füllt die Karte.
  • fügen Sie zur Umsetzung der default Fall vermeiden Ausführlichkeit?

InformationsquelleAutor Rachel | 2010-03-17
Schreibe einen Kommentar