vec.resize( newsize )
определено так же, как
vec.insert( vec.end(), newsize - vec.size(), T() )
если newsize > vec.size()
… но у компилятора могут возникнуть трудности с определением, насколько он растет, а не уменьшается, и насколько. Вы можете попробовать профилирование с обоими.
Если вы уверены, что для инициализации по умолчанию требуется время, явно исключите ее с помощью собственного конструктора. (Даже если неявный конструктор в порядке, хорошо показать намерение.)
struct BYTE {
char v;
BYTE() {} // no default initialization!
BYTE( char x ) : v(x) {}
operator char&() { return v; }
operator char const&() const { return v; }
char *operator&() { return &v; } // not sure about operator&...
char const *operator&() const { return &v; } // probably good in this case
};