Os mapas STL inicializam tipos primitivos na inserção?

eu tenho umstd::map como isso:

map<wstring,int> Scores;

Ele armazena nomes de jogadores e pontuações. Quando alguém obtém uma pontuação, eu simplesmente faria:

Scores[wstrPlayerName]++;

Quando não há elemento no mapa com a chavewstrPlayerName ele criará um, mas será inicializado como zero ou nulo antes do incremento ou será deixado indefinido?

Devo testar se o elemento existe sempre antes do incremento?

Eu apenas me perguntei porque achava que coisas do tipo primitivo sempre são indefinidas quando criadas.

Se eu escrever algo como:

int i;
i++;

O compilador me avisa que eu estou indefinido e quando executo o programa geralmente não é zero.

questionAnswers(4)

yourAnswerToTheQuestion