No son nulas si no inicializa la estructura.
Snapshot s; // receives no initialization
Snapshot s = {}; // value initializes all members
El segundo hará que todos los miembros sean cero, el primero los deja en valores no especificados. Tenga en cuenta que es recursivo:
struct Parent { Snapshot s; };
Parent p; // receives no initialization
Parent p = {}; // value initializes all members
El segundo hará p.s.{x,y}
cero. No puede usar estas listas de inicializadores agregados si tiene constructores en su estructura. Si ese es el caso, se le tiene que añadir initalization adecuada a esos constructores
struct Snapshot {
int x;
double y;
Snapshot():x(0),y(0) { }
// other ctors/functions...
};
inicializará tanto x como y a 0. Obsérvese que se puede utilizar x(), y()
inicializarlas haciendo caso omiso de su tipo: Eso es entonces el valor de inicialización , y generalmente produce un valor inicial adecuado (0 para int, 0.0 para double, llamando al constructor predeterminado para tipos definidos por el usuario que tienen constructores declarados por el usuario, ...). Esto es importante especialmente si su estructura es una plantilla.
Utilice un std :: mapa <> 0 y regresar cuando una tecla no lo hace existe. – Jonny