URL: https://www.overclockers.at/coding-stuff/c_stl_pair_in_list_verpacken_110949/page_1 - zur Vollversion wechseln!
Hi,
ich möchte In einer Liste Paare von Zahlenwerten speichern. Dazu habe ich ein Liste angelegt, in die ich dann zuweisen möchte.
Code:double left = 0.0; double right = 0,0; list<pair<double, double> > equivalents; // [...] // so möchte ich dann gerne etwas zuweisen, hier gibts aber den compiler Fehler equivalents.push_back(new pair<double, double>(left, right));
Zitatrestoration.cpp: In member function `void Restoration::regionLabeling(Mat3d*,
int)':
restoration.cpp:416: error: no matching function for call to `
std::list<std:air<double, double>, std::allocator<std:
air<double,
double> > >:ush_back(std:
air<double, double>*)'
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.2/include/g++-v3/bits/stl_list.h:746: error: candidates
are: void std::list<_Tp, _Alloc>:ush_back(const _Tp&
[with _Tp =
std:air<double, double>, _Alloc = std::allocator<std:
air<double, double>
>]
restoration.cpp:324: warning: unused parameter `int t3'
make[1]: *** [restoration.o] Error 1
make[1]: Leaving directory `/home/alexsb/Uni/SS04/VIS/students/2004/bacgvis/bacgvis23/ba/task1'
make: *** [all] Error 2
Nix new !
equivalents.push_back(make_pair(left, right))
oag, geht
danke
Kannst mir auch eventuell erklären wie das jetzt vom speicher aufräumen usw funktioniert, und warum da kein new gehört. Wie man sich ja denken kann (liste) passiert das ganze öfter 
Grundregel: Solange du nicht new aufrufst, brauchst du auch kein delete (bzw. auto_ptr). Das Aufräumen wird vom Destructor der STL Container automatisch gemacht.
Ist vielleicht am Anfang ein bisschen schwer zu überschauen, aber man gewöhnt sich daran.
Du brauchst deshalb kein new, weil STL Container die Objekte selber und nicht Pointer darauf enthalten, wie bei Java. Das Objekt wird mit make_pair erzeugt und dann in die Liste hineinkopiert (wobei's da irgendeine Optimierung gibt, damit diese Kopiererei nicht tatsächlich stattfinden muss)
super, danke
Zitat von alexsbsuper, danke

ja 
bin schon zu mittag fertig worden 
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026