Heim > Backend-Entwicklung > C++ > Hauptteil

Wie übergebe ich ein std::array unbekannter Größe an eine Funktion in C?

Barbara Streisand
Freigeben: 2024-10-24 19:04:30
Original
939 Leute haben es durchsucht

How to Pass an std::array of Unknown Size to a Function 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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!