STL Vector: Element entfernen
-

..mh noch zu früh am morgen.
muss ich mal in ruhe studieren.danke
-
camper schrieb:
das remove_if ist nur, um zu zeigen, wie es im prinzip funktioniniert. letzlich wird es etwa so aussehen:
template<typename I, typename O, typename Pred> I remove_copy_if(I first, I last, O out, Pred p) { for ( ; first != last ; ++first ) if ( !p( *first ) ) out++ = *first; return out; } template<typename I, typename Pred> I remove_if(I first, I last, Pred p) { I x = first = find_if( first, last, p ); return x == last ? last : remove_copy_if( ++x, last, first, p ); }dumme fragen: (falls es sowas gibt
)
warum machts Du ein template? oder ist das nur allgemein formuliert so wie in der referenz?
wenn ich remove_if implementiere wird trotzdem remove_copy_if aufgerufen? wo ist denn dann der vorteil?
-
remove_if() und Konsorten sollst du nicht implementieren - binde dir einfach den Header <algorithm> ein und gut ist. Sieh diese Code-Beispiele einfach als Variante an, wie die STL-Algorithmen umgesetzt werden könnten (wie es wirklich aussieht, kann dir ein Blick in die <algorithm> beantworten).
(und die sind als Templates definiert, damit du sie problemlos auf jede Art von Iteratoren loslassen kannst)
-
Ich hab mal einen Blick in die algorithm geworfen und da nahezu identische Codes vorgefunden (bis auf ein paar andere Variablennamen und if statt ?)
-
sorry fürs nervig fragen stellen..
werd dann Deine variante mit dem korrigierten fehler gleich mal probieren wenn ich zuhase bin.
ich sass da gestern ewig (und hab mir <vector> und <algorithm> angeguckt mitem debugger, schritt für schritt.
)
der vector war nach einem durchgang immer leer und hat seltsame zeiger ins nirvana geliefert. nun is klar wiesodankedanke erstmal
-
ja natürlich geht es mit remove_if, etwas cpu zeit spart es wohl auch (grobe vermutung nach taskmanager).
da hör ich doch meinen alten lehrer: "abschreiben bringt nichts"
und copy paste schon gar nichts
na gut danke nochmal euch allen.
werd mich nun aufs nächste problem stürzen...bye