PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C++] Referenzen auf temp(?) Variablen



dusterl
12-09-2005, 17:59
Habe mich mal an der c++ implementierung des DFS Algorithmus versucht. Programm läuft soweit und liefert für meine Beispielgraphen das richtige Ergebnis.
Bin jetzt aber nicht sicher, ob ich die std::vector aus der STL richtig einsetze.
Laut http://www.sgi.com/tech/stl/Vector.html nimmt std::vector::push_back als Argument eine const Referenz (void push_back(const T&)).
Genutzt habe ich vector wie folgt, wobei Kante einfach nur eine selbstgeschriebene Klasse ist, die 2 ints speichert.



std::vector<Kante>* kreis=new std::vector<Kante>;
kreis->push_back(Kante(*kreisanfang, *kreisende));


Ist das so sinnvoll, oder lege ich so eine Referenz auf eine temporäre Variable ab und das Ergebnis beim Auslesen ist nur Glückssache?

locus vivendi
12-09-2005, 18:51
Alle Standardcontainer kopieren Elemente die eingefügt werden sollen, egal mit welchen Operationen (insert, push_back, ...).

Es ist üblicherweise auch sinnvoll, diese Semantik für eigenen Code zu übernehmen, wenn man Argumente als Referenz-auf-Konstant empfängt. Oder, wenn man davon abweicht, sollte dies zumindest auffällig dokumentiert werden.

dusterl
12-09-2005, 19:09
Ah danke.

Dachte mir schon sowas in der Richtung, hab aber nichts in der Doku gefunden.

Joghurt
13-09-2005, 13:15
Genutzt habe ich vector wie folgt, wobei Kante einfach nur eine selbstgeschriebene Klasse ist, die 2 ints speichert.Dafür könntest du auch STLs pair nehmen:
typedef std::pair<int,int> Kante;