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
sizeElementen vom TypT.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
intwäre allerdingsunsigned intodersize_t.
-
Ok, danke.
-
Benutz die STL für Vektoren. Da sind solche Dinge (und noch vieles, nützliches mehr) schon eingebaut.