Finde mit dieser Funktion den kleinsten / minimalen Wert eines Arrays.
template <typename T>
T minValue(T array[], int size) {
T minVal = array[0];
for (uint i = 1; i < size; i++) {
if (array[i] < maxVal) {
minVal = array[i];
}
}
return minVal;
}
Lass uns den Code Schritt für Schritt verstehen.
template <typename T>
Damit der Code möglichst dynamisch funktioniert und eine Funktion mehrere Datentypen handhaben kann, verwendet man ein sogenanntes "template". In diesem Fall wird der Templateparameter mit dem Namen "T" deklariert. Link
T minValue(T array[], int size)
Hier findet die Funktionsdefinition statt. Man gibt den Datentyp der Rückgabe (T = Rückgabe im Format des Templateparameters), den Namen der Funktion (minValue) und den Datentyp der Übergabeparameter mitsamt dem Namen (T array[], int size) an. Der Templateparameter "T" ersetzt vorerst den Datentyp, bis ein Funktionsaufruf stattfindet. Erst bei der Übergabe kann der Datentyp, der übergebenen Variable "array[]", dem Templateparameter "T" zugewiesen werden.
T minVal = array[0]
Die Variable "minVal" wird als Puffer verwendet um den kleinsten Wert im Array zu speichern. Sie ist vom Typ T, da auch dieser Wert dem Typ des Array entsprechen muss. Man nimmt zudem vorerst an, dass der Wert im Array mit dem Index 0 der Kleinste ist.
for (uint i = 1; i < size; i++)
Diese for-Schleife loopt solange über mein übergebenes Array, bis alle Elemente verglichen worden sind. Daher muss ich als Übergabeparameter auch die Größe vom Array übergeben, damit die Anzahl der Schleifendurchläufe begrenzt wird.
if (array[i] > minVal)
Bei dieser if-Anweisung wird der Code im Anweisungsblock von "{" bis "}" nur ausgeführt, wenn der Vergleich, von dem Wert im Array mit dem Index i kleiner als der bisher angenommen Wert minVal ist, wahr ist.
minVal = array[i]
Ist die Bedingung von oben wahr, setzt die Funktion den Wert minVal auf den Wert des Array mit dem Index i.
return minVal
Ist die for-Schleife fertig durchgelaufen, wird der Wert minVal mit dem return-Statement zurückgegeben und man kann diese Rückgabe zur weiteren Verarbeitung im Code verwenden.