Хочу реализовать свой вектор для лучшего понимания работы данного контейнера. Можете объяснить за счет чего происходит "резервирование" памяти в векторе. Сомневаюсь, что там используют malloc, а потом при расширении контейнера placement new. Еще было предположение что просто инициализируется память конструктором по-умолчанию, а затем, снова таки, при расширении происходит обычное присваивание.
P. S. Очень тяжело читать исходники, так как я программирую только год
Как уже упоминалось в комментариях к вопросу, работа с памятью в векторе идёт через аллокатор, которым параметризирован шаблонный класс std::vector
. Если он явно не указал, используется аллокатор по умолчанию. Никаких инициализаций конструктором по умолчанию не происходит, т.к. резервирование, а по сути функция std::vector::reserve
не должна создавать объекты, её задача лишь подготовить плацдарм (память).
Когда вектор уже содержит какие-то объекты, резервирование при необходимости выполняет перемещение (вызывает перемещающий конструктор) существующих объектов в новую свежевыделенную память.
Ну, если введено что-то не то - значит, сбросить поток, попросить ввести зановоВот примерный набросок для целого числа в конкретном диапазоне...