Maximal- und Minimalwert aus einem Vektor in C++
-
Verwenden Sie eine
for
-Schleife, um den maximalen und minimalen Wert aus einem Vektor in C++ zu finden -
Verwenden Sie die Funktionen
std::max_element
undstd::min_element
, um den Maximal- und Minimalwert aus einem Vektor in C++ zu erhalten -
Verwenden Sie die Funktion
std::minmax_element
, um die Maximal- und Minimalwerte aus einem Vektor in C++ abzurufen
Ein Vektor in C++ ist nichts anderes als ein dynamisches Array, das seine Größe automatisch ändern kann. Da ein Vektor ein Container für Elemente ist, möchten wir vielleicht den maximalen oder minimalen Wert herausfinden, den ein Vektor enthält.
Beim Umgang mit Vektoren können wir eine Schleife verwenden, genau wie bei der Suche nach dem maximalen oder minimalen Element in einem Array. Dieser Artikel befasst sich auch mit einigen Bibliotheksfunktionen, die uns dabei helfen, dasselbe zu tun.
Verwenden Sie eine for
-Schleife, um den maximalen und minimalen Wert aus einem Vektor in C++ zu finden
Im folgenden Beispiel haben wir zwei Funktionsvorlagen; maxElement
zum Finden des maximalen Elements und minElement
zum Finden des minimalen Elements. Innerhalb des main()
-Blocks definieren wir einen Vektor marks
und übergeben ihn an die Template-Funktionen.
Der von den Funktionen minElement
und maxElement
zurückgegebene Wert wird in den Variablen min,
bzw. max
gespeichert und diese Variablen auf dem Bildschirm ausgegeben. Die Funktion maxElement
hat eine Variable max
, die den Makrowert INT_MIN
enthält, und dann verwenden wir die for
-Schleife, um alle Vektorelemente durchzugehen und sie mit dem in max
gespeicherten Wert zu vergleichen.
Wir aktualisieren den Wert von max
, wenn wir ein Element finden, das größer als der darin gespeicherte Wert ist, und dies für alle Elemente des Vektors. Die Funktion maxElement
gibt den zuletzt aktualisierten Wert der Variable max
zurück, und so erhalten wir den Maximalwert aus dem Vektor marks
.
Auch die Funktion minElement
arbeitet auf die gleiche Weise und gibt den Minimalwert des Vektors zurück. Sehen wir uns ein Beispiel für die Verwendung einer Schleife an, um den maximalen und minimalen Wert aus einem Vektor in C++ zu finden.
Code:
#include <climits>
#include <iostream>
#include <vector>
using namespace std;
template <typename D>
int maxElement(vector<D> const &v) {
int max = INT_MIN;
for (const D &i : v) {
if (max < i) {
max = i;
}
}
return max;
}
template <typename D>
int minElement(vector<D> const &v) {
int min = INT_MAX;
for (const D &i : v) {
if (min > i) {
min = i;
}
}
return min;
}
int main() {
vector<int> marks = {23, 45, 65, 23, 43, 67, 87, 12};
int min = minElement(marks);
int max = maxElement(marks);
cout << "The minimum marks are: " << min << endl;
cout << "The maximum marks are: " << max << endl;
return 0;
}
Ausgabe:
The minimum marks are: 12
The maximum marks are: 87
Dies ist ein einfacher Ansatz, um die maximalen und minimalen Elemente eines Vektors in C++ zu finden.
Verwenden Sie die Funktionen std::max_element
und std::min_element
, um den Maximal- und Minimalwert aus einem Vektor in C++ zu erhalten
Um die maximalen und minimalen Werte aus einem Vektor in C++ zu finden, können wir die Funktionen std::max_element
bzw. std::min_element
verwenden.
Die Funktion max_element
gibt einen Iterator zurück, der auf den größten Wert zeigt, und die Funktion min_element
gibt einen Iterator zurück, der auf den kleinsten Wert zeigt, beide im Bereich (start, end)
.
Syntax:
*min_element(start_index, end_index);
*max_element(start_index, end_index);
Im folgenden Beispiel übergeben wir als Argumente zunächst die Zeiger auf Anfang und Ende des Vektors, marks
an die beiden Funktionen max_element
und min_element
. Die von den Funktionen max_element
und min_element
zurückgegebenen Werte werden in den Variablen max
bzw. min
gespeichert.
Code:
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> marks = {23, 34, 56, 75, 23, 44, 58};
int max = *max_element(marks.begin(), marks.end());
int min = *min_element(marks.begin(), marks.end());
cout << "The minimum marks are: " << min << endl;
cout << "The maximum marks are: " << max << endl;
return 0;
}
Ausgabe:
The minimum marks are: 23
The maximum marks are: 75
Beachten Sie, dass diese beiden Funktionen mit Hilfe einer vordefinierten Funktion zum Durchführen von Vergleichen verwendet werden können. Lesen Sie mehr über diese Funktionen hier.
Verwenden Sie die Funktion std::minmax_element
, um die Maximal- und Minimalwerte aus einem Vektor in C++ abzurufen
Das std::minmax_element
ist eher eine komprimierte Version der beiden obigen Funktionen. Anstatt sie separat zu verwenden, können wir die Funktion std::minmax_element
verwenden, um ein Paar Iteratoren als zurückgegebenen Wert zu erhalten.
Diese Funktion gibt ein Paar Iteratoren zurück, bei denen der erste Wert auf das minimale Element und der zweite Wert auf das maximale Element zeigt. Beispielsweise übergeben wir den ersten und letzten Index des Vektors marks
an die Funktion minmax_element
und der von dieser Funktion zurückgegebene Wert wird in der Variablen res
gespeichert, die mit dem auto
Stichwort.
Dann verwenden wir den Operator dot(.)
, um die Minimal- und Maximalwerte aus dem Iteratorpaar zu trennen und sie in den Variablen min
und max
zu speichern. Wir verwenden die Funktion minmax_element
, um die maximalen und minimalen Werte aus einem Vektor in C++ zu erhalten.
Code:
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> marks = {34, 23, 56, 75, 23, 67, 88, 12};
auto res = minmax_element(marks.begin(), marks.end());
int min = *res.first;
int max = *res.second;
cout << "The minimum marks are: " << min << endl;
cout << "The maximum marks are: " << max << endl;
return 0;
}
Ausgabe:
The minimum marks are: 12
The maximum marks are: 88
Unten ist die modifizierte Version des obigen Codes, der auch den Index des maximalen und minimalen Werts des Vektors zurückgibt. Dies geschieht mit der Funktion std::distance
, die die Anzahl der Elemente zwischen dem ersten und letzten Element berechnet.
Code:
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> marks = {34, 23, 56, 75, 23, 67, 88, 12};
auto res = minmax_element(marks.begin(), marks.end());
int min = *res.first;
int max = *res.second;
int indx_max = distance(marks.begin(), res.first);
int indx_min = distance(marks.begin(), res.second);
cout << "The minimum marks are: " << min << endl;
cout << "Found at index: " << indx_min << endl;
cout << "The maximum marks are: " << max << endl;
cout << "Found at index: " << indx_max << endl;
return 0;
}
Ausgabe:
The minimum marks are: 12
Found at index: 6
The maximum marks are: 88
Found at index: 7
Weitere Informationen zu dieser Funktion finden Sie in dieser Dokumentation. Hier geht es darum, wie wir in C++ den maximalen und minimalen Wert aus einem Vektor erhalten können.