Maximum aus Integer finden.



  • Ja, wenn ich dich richtig verstehe, ist das richtig 😃 Du brauchst allerdings nicht unbedingt einen Funktor (also ein Objekt einer Klasse, für die der Funktionsaufruf-Operator überladen ist), sondern in deinem Fall sollte es auch eine einfache Funktion tun, also sowas wie

    bool ComparePlayersByKonto(Player const &lhs, Player const &rhs)
    {
        return lhs.getKonto() < rhs.getKonto();
    }
    

    Felix



  • vieeeeelen dank an alle : )
    ganz besonders dem felix 😃

    habs jetz erstmal soweit dass es wenigstens funktioniert:

    bool compareKonto(player *lhs, player *rhs)
    {
      return lhs->getKonto() < rhs->getKonto();
    }
    
    void gamehandler::run()
    {
      vector<player*> playerVec;
    
      playerVec.push_back(&Red);
      playerVec.push_back(&Purple);
      playerVec.push_back(&Blue);
      playerVec.push_back(&Yellow);
    
      vector<player*>::const_iterator max = max_element(playerVec.begin(), playerVec.end(), compareKonto);
      cout << *max->getKonto() << endl;  //funktioniert nicht
      playerVec.push_back(*max);
      cout << playerVec[4]->getKonto() << endl;  //funktioniert
    }
    

    Der iterator max ist doch ein Zeiger der mir nun auf das Maximum zeigt. Warum kann ich nicht wie oben versucht direkt mithilfe des iterators getKonto aufrufen ?
    Speichere ich das Objekt auf welches der Iterator zeigt zuerst wieder in den Vector und geben dann erst den Kontostand aus funktioniert es. *verständnisproblem*



  • cout << (*max)->getKonto() << endl;
    


  • simon.gysi schrieb:

    cout << (*max)->getKonto() << endl;
    

    Was mich gerade wieder daran erinnert das ich ziemlich froh bin das sowas nicht geht:

    cout << max->->getKonto() << endl;
    

    oder nur

    cout << max-->getKonto() << endl;
    

    Ich glaube dann wäre ich noch früher fällig für die Rente. 😉



  • Fellhuhn schrieb:

    simon.gysi schrieb:

    cout << (*max)->getKonto() << endl;
    

    Was mich gerade wieder daran erinnert das ich ziemlich froh bin das sowas nicht geht:

    cout << max->->getKonto() << endl;
    

    oder nur

    cout << max-->getKonto() << endl;
    

    Ich glaube dann wäre ich noch früher fällig für die Rente. 😉

    Das hier wäre aber ohne Probleme möglich gewesen. 🙂

    cout << max->getKonto() << endl;
    

    Obwohl das hier:

    max-->getKonto()
    

    Auch ohne weiters möglich ist. :p

    int getKonto ()
    {
        return 2;
    }
    ...
    int max = 5;
    cout << (max-->getKonto()) << endl;
    

    Was gibt das wohl aus? 😃



  • Nichts, da boolsche Werte per Default nicht ausgegeben werden. 😉



  • drakon schrieb:

    Das hier wäre aber ohne Probleme möglich gewesen. 🙂

    cout << max->getKonto() << endl;
    

    hm in meinem fall leider nicht ^^

    Danke allen, funktioniert nun endlich.
    Wie kompliziert manche scheinbar so trivialen Dinge sein können, wobei sich die Lösung sobald man sie gefunden hat doch wieder als relativ primitiv herausstellt 😃



  • sust schrieb:

    Wie kompliziert manche scheinbar so trivialen Dinge sein können, wobei sich die Lösung sobald man sie gefunden hat doch wieder als relativ primitiv herausstellt 😃

    Einen Kaffee auf chinesisch zu bestellen ist auch nur nicht trivial, wenn man kein Chinesisch kann. 😉



  • aber ich kanns ja.. "eigentlich" 😞



  • Wenn es beim Nachbestellen der Sahne hapert, weil man es noch nie brauchte, schlägt man halt nach wie es heißt (oder fragt eben hier). 😉


Anmelden zum Antworten