Существует несколько конструкторов для std::string
. Я искал способ избежать перераспределения, и я удивлен тем, что есть конструктор заполнения, но конструктор "резервный".
std::string (size_t n, char c);
но не
std::string (size_t n);
Итак, мне нужно вызвать reserve()
после того, как он уже присвоил значение по умолчанию (16 байтов в моем случае), чтобы сразу перераспределить его?
Есть ли причина, почему нет такого конструктора для резервирования пространства непосредственно, когда объект создается, вместо того, чтобы делать это вручную? Или я что-то упускаю, и есть способ сделать это?
Использование конструктора заливки - пустая трата времени, потому что он будет циклически перемещаться по памяти, чтобы получить перезапись, а также вызвать неправильный размер, потому что s.length()
сообщает N
вместо 0
.