Vermeidung von if-Anweisungen innerhalb einer for-Schleife?

Habe ich eine Klasse namens Writer hat eine Funktion writeVector etwa so:

void Drawer::writeVector(vector<T> vec, bool index=true)
{
    for (unsigned int i = 0; i < vec.size(); i++) {
        if (index) {
            cout << i << "\t";
        }
        cout << vec[i] << "\n";
    }
}

Ich versuche, nicht zu haben, einen doppelten code, während immer noch sorgen um die performance.
In der Funktion mache ich das if (index) überprüfen Sie auf jeder Runde mit meiner for-Schleife, obwohl das Ergebnis immer das gleiche.
Dies ist gegen die "Gedanken über die Leistung".

Konnte ich problemlos vermeiden, indem Sie die Prüfung außerhalb meiner for-Schleife.
Jedoch, ich erhalten jede Menge doppelten code:

void Drawer::writeVector(...)
{
    if (index) {
        for (...) {
            cout << i << "\t" << vec[i] << "\n";
        }
    }
    else {
        for (...) {
            cout << vec[i] << "\n";
        }
    }
}

Also sind diese beiden "schlechten" Lösungen für mich.
Worüber ich nachgedacht habe, ist zwei private Funktionen, einer von Ihnen outs der index und ruft dann die anderen.
Die andere nur outs Wert.
Allerdings kann ich nicht herausfinden, wie es mit meinem Programm, ich würde noch die if überprüfen, um zu sehen, was man nennen...

Nach das problem, Polymorphismus scheint wie eine richtige Lösung.
Aber ich kann nicht sehen, wie soll ich es hier.
Was wäre die bevorzugte Art und Weise zu lösen diese Art von problem?

Dies ist nicht ein echtes Programm, ich bin nur daran interessiert zu lernen, wie man diese Art von problem sollte gelöst werden.

InformationsquelleAutor der Frage Skamah One | 2013-06-01

Schreibe einen Kommentar