Самый быстрый ... наверное, да.Багги почти уверен!
Это в основном зависит от реализации, платформы и ... какого типа содержит массив.
В C ++, когда переменная определена, вызывается ее конструктор.Когда массив определен, вызываются все конструкторы элементов массива.
Очистка памяти может считаться «хорошей» только в тех случаях, когда известно, что тип массива имеет начальное состояние, которое может быть представленона все ноль и для которых конструктор по умолчанию не выполняет никаких действий.
Это в целом верно для встроенных типов, но также ложно для других типов.
Самый безопасный способ - присвоить элементам инициализированный временный элемент по умолчанию.
template<class T, size_t N>
void reset(T* v)
{
for(size_t i=0; i<N; ++i)
v[i] = T();
}
Обратите внимание, что если T равно char
, функция создается и преобразуется точно как memset
.Так что это та же скорость, не больше, не меньше.