Даже когда производительность имеет решающее значение, вам лучше использовать vector<char>
- она позволяет заранее распределить память (метод reserve ()) и поможет вам избежать утечек памяти. Использование vector :: operator [] приводит к накладным расходам, но вы всегда можете извлечь адрес буфера и точно его индексировать, если это был char *.