Heim > Backend-Entwicklung > C++ > Hauptteil

Kann std::array mit unbekannter Größe direkt an eine Funktion übergeben werden?

Susan Sarandon
Freigeben: 2024-10-25 04:44:29
Original
293 Leute haben es durchsucht

Can std::array with Unknown Size be Passed to a Function Directly?

Übergabe eines std::array unbekannter Größe an eine Funktion

In diesem Codebeispiel besteht das Ziel darin, eine Funktion zu erstellen, die ein std::array von annimmt ein bekannter Typ, aber eine unbekannte Größe. Dies ist ein häufiges Szenario, das bei verschiedenen Programmieraufgaben auftreten kann.

<code class="cpp">// made up example
void mulArray(std::array<int, ?>& arr, const int multiplier) {
    for(auto& e : arr) {
        e *= multiplier;
    }
}

// lets imagine these being full of numbers
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

Bei der Suche nach einer Lösung stießen die Entwickler jedoch auf Vorschläge, Funktionsvorlagen zu verwenden. Obwohl Funktionsvorlagen dieses Problem lösen können, können sie zusätzliche Komplexität mit sich bringen und sind nicht immer der effizienteste Ansatz.

Die Frage ist, ob es eine einfachere Möglichkeit gibt, diese Aufgabe zu erfüllen, ähnlich wie man damit arbeiten würde einfache Arrays im C-Stil. Leider ist die Antwort negativ. In C gibt es keine direkte Möglichkeit, ein Array unbekannter Größe ohne Verwendung von Funktionsvorlagen an eine Funktion zu übergeben.

Um dies zu ermöglichen, muss man tatsächlich auf Funktionsvorlagen zurückgreifen, wie unten dargestellt:

<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 Funktionsvorlage kann mit Arrays beliebiger Größe verwendet werden, wie im folgenden Live-Beispiel gezeigt: https://godbolt.org/z/sV49sK

Das obige ist der detaillierte Inhalt vonKann std::array mit unbekannter Größe direkt an eine Funktion übergeben werden?. 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!