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 wieso

    dankedanke 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


Anmelden zum Antworten