Maximal- und Minimalwert aus einem Vektor in C++

Shikha Chaudhary 12 Oktober 2023
  1. Verwenden Sie eine for-Schleife, um den maximalen und minimalen Wert aus einem Vektor in C++ zu finden
  2. Verwenden Sie die Funktionen std::max_element und std::min_element, um den Maximal- und Minimalwert aus einem Vektor in C++ zu erhalten
  3. Verwenden Sie die Funktion std::minmax_element, um die Maximal- und Minimalwerte aus einem Vektor in C++ abzurufen
Maximal- und Minimalwert aus einem Vektor in C++

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.

Verwandter Artikel - C++ Vector