Wie vermeidet man in diesem Fall das Problem der Code-Duplikation?

8

Ich habe 2 ähnliche Funktionen, die Berechnungen mit Graphknoten oder Kanten durchführen.

%Vor%

Die Frage ist: Wie kann man die Code-Duplikation in dieser Situation loswerden? Gibt es eine mögliche Lösung mit Vorlagen?

    
Narek Atayan 23.10.2015, 06:56
quelle

3 Antworten

6

Sie könnten ein Template-Argument für das Vertex / Edge - und Manager-Objekt und dann verwenden std::mem_fn für die Funktion, die aufgerufen werden soll.

Umbrechen Sie den eigentlichen Funktionsaufruf, um den Aufruf zu erleichtern. Vielleicht etwas wie

%Vor%

Nicht getestet, aber es sollte hoffentlich einen Ausgangspunkt bieten.

    
Some programmer dude 23.10.2015, 07:10
quelle
2

Alternativ zum Methodenzeiger können Sie

verwenden %Vor%

Eine andere Alternative wäre die Verwendung von auto it anstelle von IterType<..> it und das Umbenennen (oder Alias ​​) vertices() / edges() durch einen allgemeinen Namen ( data() ).

    
Jarod42 23.10.2015 07:44
quelle
1

Hier ist ein einfacher Weg, die Funktion zu tempern:

%Vor%

Und hier ist, wie Sie get_iterator :

implementieren %Vor%

Um get_iterator für jeden Typ nützlich zu machen, können Sie eine Vorlage verwenden:

%Vor%     
user2079303 23.10.2015 07:36
quelle

Tags und Links