Не могу понять, в чем смысл функции reserve()
. Она выделяет память, но не создает элементов, увеличивает емкость, но не размер. Для чего она нужна если все можно сделать с помощью resize()
?
Для оптимизации. resize
требует инициализации всех элементов, и делает размер контейнера строго заказанным. Он становится заполненным чем-то - что вам может быть не нужно в данный момент. При этом вам придется отслеживать отдельно реальную заполненность вашего вектора, т.к. size()
будет, по сути, врать - говоря, сколько всего элементов в векторе, а не элементов, нужных вам. Если же вы хотите добавлять с помощью resize()
равно столько элементов, сколько вам в данный момент нужно - то это просто бестолку потраченное время на инициализацию и не более того... потому что каждый вызов будет вызывать перераспределение памяти и копирование.
reserve
подготавливает место для последующего заполнения, так что какой-нибудь push_back
будет гарантированно (а не амортизированно) выполняться за O(1) - без каких-либо перераспределений памяти, съедающих массу времени... При этом size()
будет давать точное количество элементов, итератор end()
показывать куда надо...
Примерно так. Если не убедил - могу еще немного поубеждать :)
Виртуальный выделенный сервер (VDS) становится отличным выбором
Дело такое, при обработке сообщения WM_GETMINMAXINFO и установке значений LPMINMAXINFO, при первой установке, те
Мне нужно чтобы юзер нажал на кнопку перешел в галерею выбрал изображения и он вставился в ImageViewНа эмуляторе все окей но при работа на устройстве...
Программа должна подсчитывать кол-во букв, символов и строкДля выхода из цикла есть оператор if, который при вводе пустой строки автоматически...