Heim  >  Artikel  >  Backend-Entwicklung  >  Wie gehe ich mit std::Arrays unterschiedlicher Größe in C-Funktionen um?

Wie gehe ich mit std::Arrays unterschiedlicher Größe in C-Funktionen um?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-24 14:46:01800Durchsuche

How to Handle std::Arrays of Varying Sizes in C   Functions?

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

Frage:

Wie kann eine Funktion geschrieben werden, um std::arrays bekannten Typs, aber unterschiedlicher Größe zu verarbeiten? Betrachten Sie zum Beispiel das folgende Beispiel:

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

Wie kann eine Funktion wie mulArray definiert werden, um Arrays unterschiedlicher Größe wie die folgenden zu berücksichtigen:

<code class="cpp">std::array<int, 17> arr1;
std::array<int, 6>  arr2;
std::array<int, 95> arr3;</code>

Antwort:

Leider ist es nicht möglich, eine Funktion zu schreiben, die std::arrays unbekannter Größe akzeptiert, ohne eine Funktionsvorlage zu verwenden oder einen anderen Containertyp wie std::vector zu verwenden.

Funktionsvorlagen:

<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>

In diesem Beispiel ist die mulArray-Funktion als Funktionsvorlage definiert, sodass sie Arrays beliebiger Größe verarbeiten kann. Der SIZE-Parameter gibt die Größe des Arrays zur Kompilierungszeit an.

Beispielverwendung:

<code class="cpp">// Array of size 17
std::array<int, 17> arr1;

// Function call with template instantiation for size 17
mulArray(arr1, 3);</code>

Hinweis: Bei Verwendung von Funktionsvorlagen Die Funktionsdefinition muss in einer Header-Datei platziert werden, damit während der Kompilierung darauf zugegriffen werden kann.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit std::Arrays unterschiedlicher Größe in C-Funktionen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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