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