Puoi usare direttamente anche un memset, tipicamente molto più veloce.
E' un approccio più stile C che C++, ma praticamente sempre (diciamo meglio molto spesso) i due
mondi sono "fusi".
Come si fa per gli array bidimensionali?
Con due cicli
for (int riga=0;riga<qualcosa;riga++)
for (int colonna=0;colonna<qualcosa;colonna++)
matrice[riga][colonna]=0;
Poi ci sono 7000 variazioni sul tema, ovvero se la matrice è memorizzata per righe o colonne avrai tempi diversi per la cache della CPU, puoi usare puntatori invece di indici, puoi usare memset (cosa più probabile), puoi
usare strutture più complesse del C++ (dove tipicamente avrai i metodi .size()), insomma son tanti i modi.
Cambia poco per dimensioni modeste, cioè diventa importante quando la matrice è grande e richiede un tempo cospicuo per essere inizializzata (raramente capita nel mondo reale)
Comunque confermo pienamente il consiglio di inizializzare sempre e comunque.
Per la verità ++i è un vezzo inutile in questo caso rispetto a i++