Höchster Wert eiens Vektors (STL)
-
Hey!
Ich suche eine Standartfunktion die mir den Höchsten Wert eines Vektors berechnet
sprichvMeinVektor.hoechster_wert //hoechster_wert gibts natürlich nicht, hab ich mir als Platzhalter ausgedachtund dass mir bei den werten
3
4
2halt die 4 rauskommt.
Habe mal unter der Referenz nachgeschaut, aber habe nix gefunden, dass mir den höchsten wert ausgibt.
Bei .max_size krieg ich exakt "1073741823" jedes mal raus, egal was ich eintipp.Danke für eure Hilfe

-
-
Der Vector macht ja auch sowas nicht, du muß in die std-Algorithmen schauen.
-
Vielen Dank euch beiden
Hat prima geklappt, nachdem ich gemerkt hab <algorithm> zu includen ^^Wer nochma die komplette Syntax für Vektoren will:
#include <algorithm> //Nich vergessen! Max = *max_element( v.begin(), v.end() )
-
Hab noch einmal ne Frage zu Vektoren
Man kann ja Listen so aufsteigend sortieren:
lListe.sort ();Gibt es eine solche Funktion für Vektoren etwa nicht? Dann würd ich auch noch einmal gerne wissen worin der Untschied zwischen (verketteten) Listen und Vektoren besteht. Ich sehe grade irgendwie nur Nachteile bei Vektoren und wundere mich, warum ich nicht einfach ne Liste genommen hab

-
vector kannste wie die meisten anderen Container (außer z.B. std::list) mit std::sort sortieren.
std::sort(v.begin(),v.end());
Fertig.
-
*sich frag warum ich so selten blöde bin*....
Danke für die schnelle Antwort! Aber ich weiß immer noch nich worin der Untschied zwischen Listen, Vektoren bzw auch Arrays sind. Wann benutzt man was? hab mal nen bischen gesucht/gegoogelt aber noch nix gescheites gefunden und in meinem Buch wurde alles vorgestellt aber nicht erwähnt, was für was gut ist.
-
im forumsmagazin gits einen artikel pber stl-container
-
Es kommt immer drauf an, was man machen will. Array und vector sind im Prinzip gleichwertig. std::vector kann seine Größe ändern und ist daher etwas flexibler. Wenn man das aber ausnutzt zahlt man für's wachsen Laufzeit. Verzichtet man darauf sind die beiden etwa gleichwertig.
Interessanter ist std::vector vs std::list. Ein std::vector bietet Dir Random-Access-Iteratoren und Indexzugriff. Du kannst also sofort an die n-te Stelle im vector springen und den Wert dort auslesen. Möchtest Du aber einen Wert löschen oder einfügen, dann müssen alle Werte, die danach stehen um eine Stelle nach links oder rechts verschoben werden. Das kostet natürlich Laufzeit.
Bei std::list ist es so, daß Du nicht einfach an die n-te Stelle hinspringen kannst. Du kannst nur vorne in der Liste anfangen und dann hinlaufen. Das kostet natürlich deutlich mehr Zeit. Hast Du jetzt aber nen Iterator auf irgendeinen Knoten, so ist es sehr einfach dort ein weiteres Element einzufügen oder das Element zu löschen. Dazu müssen keinerlei Werte verschoben werden.
Letztlich kommt es also auf die Anwendung an. In den meisten Fällen ist ein std::vector sehr gut geeignet (insbesondere für kleine Datenmengen). Wenn Du Index-Zugriff benötigst sowieso. Iterierst Du sowieso jedes Mal über alle Werte und ist es wichtig schnell an beliebigen Stellen einfügen/löschen zu können, dann ist std::list interessant.
-
Jester schrieb:
Es kommt immer drauf an, was man machen will. Array und vector sind im Prinzip gleichwertig. std::vector kann seine Größe ändern und ist daher etwas flexibler. Wenn man das aber ausnutzt zahlt man für's wachsen Laufzeit. Verzichtet man darauf sind die beiden etwa gleichwertig.
Interessanter ist std::vector vs std::list. Ein std::vector bietet Dir Random-Access-Iteratoren und Indexzugriff. Du kannst also sofort an die n-te Stelle im vector springen und den Wert dort auslesen. Möchtest Du aber einen Wert löschen oder einfügen, dann müssen alle Werte, die danach stehen um eine Stelle nach links oder rechts verschoben werden. Das kostet natürlich Laufzeit.
Bei std::list ist es so, daß Du nicht einfach an die n-te Stelle hinspringen kannst. Du kannst nur vorne in der Liste anfangen und dann hinlaufen. Das kostet natürlich deutlich mehr Zeit. Hast Du jetzt aber nen Iterator auf irgendeinen Knoten, so ist es sehr einfach dort ein weiteres Element einzufügen oder das Element zu löschen. Dazu müssen keinerlei Werte verschoben werden.
Letztlich kommt es also auf die Anwendung an. In den meisten Fällen ist ein std::vector sehr gut geeignet (insbesondere für kleine Datenmengen). Wenn Du Index-Zugriff benötigst sowieso. Iterierst Du sowieso jedes Mal über alle Werte und ist es wichtig schnell an beliebigen Stellen einfügen/löschen zu können, dann ist std::list interessant.
Klasse!!! Genau so eine Erklärung habe ich gesucht

Werde mir auch mal den Artikel im Magazin durchlesen, wenn ich mein aktuelles Programm fertig hab.Daaaaanke
