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().
-
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.