De esta manera:
bool map[256] = { 0 };
Algunos dicen esto:
bool map[256] = {};
Pero para mí que sólo se ve un poco raro.
¿Por qué utilizar "0" en lugar de "falso"? No es un gran problema, pero lo hago porque el inicializador de la matriz se encuentra ajustado al tamaño de la matriz con 0, no con copias del primer elemento. Dado que la inicialización de los elementos 1 a 255 se define en términos del valor "0" (que por supuesto se convierte en false
), no veo ningún daño en el elemento 0 que se inicializa con "0" también. Tener un "0" al final de una lista de inicializadores demasiado corta para los tipos escalares me recuerda lo que realmente está pasando.
Específicamente, el estándar define esto en 8.5.1/7 (lista de inicializadores más corta que la matriz), y 8.5/5 (inicializar un valor bool
equivale a inicializarlo con el valor 0 convertido a bool
).
Hola Idan, ¿esta es una forma estándar de C++ para inicializar todos los elementos en una matriz? - gracias – q0987
sí, está definido en el estándar (tratando de buscarlo mientras hablamos) –
Lo he buscado, si todavía estás buscando. Ver mi respuesta para el número (s) de párrafo. –