Übergabe eines std::array unbekannter Größe an eine Funktion
Problem:
Wie erstelle ich eine Funktion, die mit einem std::array bekannten Typs, aber variabler Größe arbeitet?
Beispiel:
<code class="cpp">// hypothetical example void mulArray(std::array<int, ?>& arr, const int multiplier) { for(auto& e : arr) { e *= multiplier; } }</code>
<code class="cpp">// imaginary arrays with values std::array<int, 17> arr1; std::array<int, 6> arr2; std::array<int, 95> arr3; mulArray(arr1, 3); mulArray(arr2, 5); mulArray(arr3, 2);</code>
Frage :
Gibt es einen einfachen Ansatz, damit dies funktioniert, ähnlich wie bei Arrays im C-Stil?
Antwort:
Leider nein.Das Übergeben von std::arrays unbekannter Größe erfordert die Verwendung von Funktionsvorlagen oder alternativen Containern wie std::vectors.
Vorlagenlösung:
<code class="cpp">template<std::size_t SIZE> void mulArray(std::array<int, SIZE>& arr, const int multiplier) { for(auto& e : arr) { e *= multiplier; } }</code>
Live-Beispiel: https://godbolt.org/z/T1d1n3vrM
Das obige ist der detaillierte Inhalt vonWie gehe ich mit std::arrays variabler Größe in Funktionen um: Ein einfacher Ansatz?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!