map<int,int> valores predeterminados

map<int,int> valores predeterminados

Tan pronto como acceda al mapa con el operador [], si la clave no existe, se agrega. Se invoca el inicializador predeterminado del tipo int, por lo que obtendrá un valor de 0.


Sí, es seguro asumirlo.

El operator[] del mapa se especifica así: ([map.access])

T() utiliza inicialización de valor para todos T excepto void ([expr.type.conv]/2) y valor-inicialización para un resultado primitivo en inicialización cero ([dcl.init]/7) .

Por lo tanto, la expresión se evalúa como una referencia a un objeto con valor cero ([dcl.init]/5) .

El operator++ call luego incrementa ese objeto a uno, y se evalúa a uno.

(Todas las referencias son C++11.)


Sí, el valor predeterminado será el predeterminado de ese tipo. Si desea otro valor predeterminado, puede crear una clase que se comporte como un int pero que tenga un constructor predeterminado diferente.