Wenn ich so etwas tun:Wie kennt die C++ 11-basierte for-Schleife die Array-Größe?
int my_array[5] = {1, 2, 3, 4, 5};
for (int &x : my_array) {
x *= 2;
}
C++ 11 weiß offensichtlich, dass mein Array 5 Elemente nur hat. Wird diese Information irgendwo im my_array-Objekt gespeichert?
Wenn ja, gibt es einen guten Grund, warum es mir als Entwickler nicht zur Verfügung gestellt wird (oder ist es?!?!?)? Es scheint, dass viele der Probleme der Welt gelöst würden, wenn C++ - Entwickler immer die Grenzen der Arrays kennen würden, mit denen sie zu tun haben.
Ok. Gibt es also einen bestimmten Grund, warum eine my_array.size nicht existiert? – MrFox
@suslik: Sicher, denn Arrays sind keine Klassen und können daher keine Mitgliedsfunktionen haben. Aber Sie können trivial eine "array_size" -Freiheitsfunktionsvorlage schreiben, die den gewünschten Wert erzeugt, oder Sie verwenden das einfach zu erstellende ['std :: excument'] (http://en.cppreference.com/w/cpp/types/extent). –
Wie lebe ich mein Leben nicht so lange zu wissen ... Ich beschuldige std :: vector :). – MrFox