Array länge, template funktion



  • Hallo, auf der suche nach einer Template-FUnktion, mit der ich die länges(Anzahl der Elemente) eine Array's ermitteln kann, bin ich auf diese Funktion gestoßen:

    //Funktion
    template<typename T, int size>
    int VectorLength(T(&)[size])
    {
    	return size;
    }
    
    //Aufruf
    int vector[] = { 47, 55, 1, 20, -87, -66 };
    int length = VectorLength(vector);
    

    So jetzt habe ich einige Fragen:
    1. kann mir einer die Parameterliste "T(&)[size]" erklären?
    2. Was ist mit der Template-Definition: "template<typename T, int size>", wozu das "int size"?
    3. Warum muss ich beim Aufruf der Funktion keinen Type im Template-Parameter angeben?



  • lord_fritte schrieb:

    1. kann mir einer die Parameterliste "T(&)[size]" erklären?

    Referenz auf ein Array mit size Elementen vom Typ T .

    lord_fritte schrieb:

    3. Warum muss ich beim Aufruf der Funktion keinen Type im Template-Parameter angeben?

    Weil die Template-Argumente aus dem Typen des Funktionsarguments deduziert werden können.

    lord_fritte schrieb:

    2. Was ist mit der Template-Definition: "template<typename T, int size>", wozu das "int size"?

    Weil die Grösse auch aus dem Argument hergeleitet wird. Sinnvoller als int wäre allerdings unsigned int oder size_t .



  • Ok, danke.



  • Benutz die STL für Vektoren. Da sind solche Dinge (und noch vieles, nützliches mehr) schon eingebaut.


Anmelden zum Antworten