Причина, по которой int directory[100] = {-1}
не работает, заключается в том, что происходит с инициализацией массива .
Все элементы массива, которые не инициализированы явно, инициализируются неявно так же, как объекты, имеющие статическую продолжительность хранения.
int
с , неявно инициализированными :
инициализируется нулем без знака
Все элементы массива, которые не инициализированы явно, инициализируются неявно так же, как объекты, имеющие статическую продолжительность хранения.
C ++ 11 представлен begin
и end
, которые предназначены для массивов!
Это означает, что при наличии массива (а не только указателя), такого как directory
, вы можете использовать fill
, как было предложено в нескольких ответах:
fill(begin(directory), end(directory), -1)
Допустим, вы пишете код, подобный этому, но затем решаете повторно использовать функциональность, забыв о том, как вы его реализовали, но вы решили изменить размер directory
на 60. Если вы написали код с использованием begin
и end
тогда все готово.
Если, с другой стороны, вы сделали это: fill(directory, directory + 100, -1)
, тогда вам лучше не забывать изменить это 100 на 60, иначе вы получите неопределенное поведение.