[c++] Wie kennt die C ++ 11-basierte for-Schleife die Array-Größe?


Answers

Es ist verfügbar - Sie können begin und end auf Arrays in Standard-C ++. Die Größe des Arrays ist im Typ codiert.

Die allgemeine Methode besteht darin, Verweise auf Arrays zu verwenden.

Hier ist eine Beispielgrößenfunktion:

template<typename T, size_t N>
size_t array_size(T (& const)[N])
{
    return N;
}
Question

Wenn ich so etwas tue:

int my_array[5] = {1, 2, 3, 4, 5};
for (int &x : my_array) {
    x *= 2;
}

C ++ 11 weiß natürlich, dass mein Array nur 5 Elemente 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??!?!?)? 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.






Links