max-Funktion in C++
-
Hi,
unter JAVA gibt es ja so eine schöne max-Funktion, die mir das maximale von 2 Elementen heraus sucht. Unter C++ habe ich so etwas nicht gefunden. Gibt es das wirklich nicht? Wie setzt man so etwas sonst effizient und effektiv um?
MfG, Ozzy
-
int max = a > b ? a : b;Wie wärs damit?
-
Hi,
klingt schon nicht schlecht; was mache ich aber, wenn ich 3 Werte vergleichen möchte? (Mehr werden es dann aber auch wirklich nicht). Habe jetzt das hier gefunden:
int max(int, int); int max(int, int, int); int max(int a, int b) { if(a<b) return b; else return a; } int max(int a, int b, int c) { if(a<b) return max(b,c); else return max(a,c); }Geht es aber vielleicht noch kürzer und effizienter?
MfG, Ozzy
-
Kürzer mit ? : siehe oben
effizenter, wieso? rufst du das so oft auf, dass die prog dadurch langsam wird?
-
Hi,
naja, ist so ein kleines Wettprogrammieren zwischen einem Freund und mir; er benutzt JAVA, ich C++; er hat den Vorteil mit max, und ich muss das jetzt eben wieder ausgleichen.
Wie funktioniert denn Dein Code? Ich muss zugeben, dass ich das nicht versteheMfG, Ozzy
-
Hi,
natürlich gibt es in C++ auch max.
#include <algorithm> int blubb = std::max( 1, 2);
-
Jo, cool, vielen Dank, genau das, was ich gesucht habe!!!
MfG, Ozzy
-
Kannst ja dann mal eure Ergebnisse posten

-
Du kannst natürlich auch deine Werte in einem "vector" deines gewünschten Typs speichern und dann so etwas machen:
template<class T> const T Maximum(const std::vector<T> &vec) { T _actual = *vec.begin(); for(std::vector<T>::const_iterator iter=vec.begin();iter!=vec.end(); ++iter) { if(*iter>_actual) _actual = *iter; } return _actual; }int x; std::vector<int> _vec; for(int i=0;i<10;++i) { cout << "enter integer value" << endl; cin >> x; _vec.push_back(x); } cout << "highest value = " << Maximum<int>(_vec);Edit:
ach ja, "#include <vector>" nicht vergessen :xmas1:
-
Wie wäre es mit std::max_element, Checker&Murckser?