If your logic is that you definitely won't write code that accesses them before setting them, then no you don't need to initialise them. If for instance you straight up did not use the array at all, you could simply leave them unitialised.
However it is simply best to initialise them since there's no reason not to, even if you initialise them to bad values. What might happen is although you always write before reading now, that may change in the future. 6 months down the track someone may refactor something, and now a read happens before a write. Because that's undefined behaviour, maybe your program will seem to function correctly, or it might work on their machine but crash on another. If you initialise them, you just won't get these problems.
Perhaps your concern is that 0
is a valid value and you don't want your program to accidentally get that value, you'd rather make it clear it's not properly initialised, but with undefined behaviour you could get 0
or some other valid value or a crash, and it may be inconsistent. You will probably thank yourself if you just initialise everything properly.
The C++ police or a compiler won't stop you from doing so, and your program can still be well formed, but you may as well guarantee it by just initialising them.