stl partition mit praedikat



  • ich bin wegen quicksort mit iteratoren gefragt worden.
    ich hab ma gedacht, dass des ganze ziemlich einfach waer, von wegen
    dieser schnittstelle...

    typedef bool (* TCompare) (TElem const &, TElem const &);
    bool compare (TElem const & lhs, TElem const & rhs);
    void sort (TItor begin, TItor end, TCompare compare);

    dass compare ein boolsches praedikat mit zwei eingangsparametern
    darstellt, ist logisch.
    aber intern kann mit partition nur eine funktion uebergeben werden, die
    einen eingangsparameter aufweist.

    i = partition(begin, end, compare(*begin, *pivot));
    //funktioniert so nicht
    [cpp]
    
    sollte dann im gesamtkontext etwa so verwendet werden nur halt statt dem bind2nd mit eigenen praedikat
    

    typedef int TValue;
    typedef vector <TValue> TVec;
    typedef TVec::iterator TItor;

    void sort (TItor & begin, TItor & end) {
    if (begin != end) {
    TItor pivot = begin;
    TItor i;
    i = partition(begin, end, bind2nd (less <TValue> (), *pivot));
    sort(begin, i);
    sort(i, end);
    }//if
    }//sort
    [cpp]

    jemand eine idee wie das gehen könnte?


Anmelden zum Antworten