Heim > Artikel > Backend-Entwicklung > Wie übergebe ich ein std::array unbekannter Größe an eine Funktion in C?
Ein std::array unbekannter Größe an eine Funktion übergeben
Wie kann man in C eine Funktion erstellen, die einen std akzeptiert: :array eines bekannten Typs, aber unbekannter Größe?
Betrachten Sie das folgende Beispiel:
<code class="cpp">void mulArray(std::array<int, ?>& arr, const int multiplier) { for(auto& e : arr) { e *= multiplier; } }</code>
Mit dieser Funktion können Sie std::arrays unterschiedlicher Größe erstellen und diese an übergeben mulArray:
<code class="cpp">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>
Gibt es eine einfachere Möglichkeit, dies zu erreichen, ähnlich der Verwendung einfacher Arrays im C-Stil?
Nein, das ist nicht möglich Betrieb ohne Verwendung von Funktionsvorlagen oder alternativen Containern wie std::vector.
Funktionsvorlagen-Lösung
Um eine generische Funktion zu erstellen, die std::arrays jeder Größe verarbeiten kann , müssen Sie eine Funktionsvorlage verwenden:
<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>
Diese Vorlage definiert eine Funktion, die ein Array von Ganzzahlen beliebiger Größe akzeptiert und jedes Element mit dem angegebenen Multiplikator multipliziert.
Ein Live-Beispiel dieser Implementierung finden Sie hier: [Live-Beispiel](https://godbolt.org/z/Y932XW)
Das obige ist der detaillierte Inhalt vonWie übergebe ich ein std::array unbekannter Größe an eine Funktion in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!