Maximaler Wert aus einem Vector



  • Hallo Forengemeinde

    Eine Frage. Am besten erklär ich das ganze wenn ich zuerst meinen Code schreibe:

    class CMyClass
    {
        double m_x;
        double m_y;
    };
    
    class CMyClassList
    {
      std::vector<CMyClass> m_myvector;
    
       double MaxX(); { ... }
    
       double MaxY(); { ... }
    
    };
    

    Also meine Frage. Wie erhalte ich den maximalen x Wert bzw den maximalen y Wert aus meiner Liste?



  • du könntest mit sort(vector.begin(), vector.end()) das ganze soriteren und dann den ersten/letzten Wert auslesen vector[0] oder evtl. vector.beginn().


  • Mod

    Es ist sicherlich schneller den vector einfach zu durchlaufen und das Maximum zu ermitteln als zu sortieren, sofern dies eine einmalige Aktion ist.
    Sortieren O(n*log n), durchsuchen O(n).

    double MaxX()
    { 
        double dMax = m_myvector[0];
        for (int i=1; i<m_myvector.size(); ++i)
        {
            if (dMax<m_myvector[i])
                dMax = m_myvector[i];
        }
        return dMax;
    }
    


  • Ok. Danke.



  • Also nochmals kurz.

    Ich nehme die Lösung von Martin. Abgewandelt halt. Denn es handelt sich ja bei den Elementen nicht um elementare Typen. Sonst hätte ich gleich max_element nehmen können. Also sortieren ist da nicht.


Anmelden zum Antworten