Выбор ответа Junior Контейнеры STL изнутри обновлено
reserve и resize
Вопрос
Чем v.reserve(100) отличается от v.resize(100) для пустого std::vector<int>?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: reserve только выделяет память, resize создаёт 100 нулей. reserve меняет только capacity: обращение v[5] после него UB, потому что элементов нет. resize меняет size, заполняя новые элементы значением по умолчанию (для int это 0) и при необходимости увеличивая ёмкость. - Разница принципиальная. -…
Варианты ответа
reserveтолько выделяет память,resizeсоздаёт 100 нулейправильный ответ- Ничем: оба вызова создают 100 элементов со значением 0
reserveсоздаёт элементы,resizeтолько выделяет памятьresizeне меняет ёмкость, аreserveменяет и размер тоже
Разбор
reserve меняет только capacity: обращение v[5] после него UB, потому что элементов нет. resize меняет size, заполняя новые элементы значением по умолчанию (для int это 0) и при необходимости увеличивая ёмкость.
- Разница принципиальная.
- Третий вариант перевёрнут.
resizeдо 100 элементов обязательно даст ёмкость не меньше 100.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.