Finde mit dieser Funktion den größten / maximalen Wert eines Arrays.
template <typename T>
T maxValue(T array[], int size) {
T maxVal = array[0];
for (uint i = 1; i < size; i++) {
if (array[i] > maxVal) {
maxVal = array[i];
}
}
return maxVal;
}
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 maxValue(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 (maxValue) 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 maxVal = array[0]
Die Variable "maxVal" wird als Puffer verwendet um den größten 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 Größte 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] > maxVal)
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 größer als der bisher angenommen Wert maxVal ist, wahr ist.
maxVal = array[i]
Ist die Bedingung von oben wahr, setzt die Funktion den Wert maxVal auf den Wert des Array mit dem Index i.
return maxVal
Ist die for-Schleife fertig durchgelaufen, wird der Wert maxVal mit dem return-Statement zurückgegeben und man kann diese Rückgabe zur weiteren Verarbeitung im Code verwenden.