std::count_if Frage?



  • folgendes:

    class elem{
    
     BOOL isReady() { /*JENACHDEM*/};
    
    };
    
    class block{
    
     std::vector<elem> data;
    
     UINT ReadyElems(){
    
       return std::count_if(data.begin(), data.end(),isReady());
    
     }
    
    };
    

    Wie ihr seht, möchte ich die anzahl der Elemente von vector ermitten welceh ready (TRUE) sind? Aber ich bekomm das so nich hin!?



  • count_if() erwartet eine Funktion/Funktor, die ein Objekt als Parameter bekommt und einen bool-Wert zurückgibt - keine Methode. Zum Glück gibt es für diesen Zweck einen geeigneten Wrapper namens mem_fun():

    UINT ReadyElems(){
        return std::count_if(data.begin(), data.end(),std::mem_fun_ref(&elem::isReady));
    }
    


  • da komtm die diskustion wieder auf, wo liegt die unterscheid zwischen methode und funktion 🙂



  • count_if erwartet irgendetwas, das mit mit () aufrufen kann. Eine Methode geht nicht, die braucht noch ein Objekt. isReady() geht gleich gar nicht, was soll das denn sein? Es kommen nur Funktionen und Funktionsobjekte in Frage.


Anmelden zum Antworten