Page 1 of 1

Въпрос за вектор в C++

Posted: Sat May 21, 2016 11:10 pm
by respec7_m3
Инициализирам вектор от тип Int и му задавам размер 100 елемента, в момента, в който му подам 101 елемента той увеличава капацитета си на 150, подавам му 151 елемента, капацитета се увеличава на 225? На какъв принцип работи това увеличаване, защото всеки път го увеличава с различни стойности и защо изобщо се увеличава след като аз съм му казал колко голям да бъде?

Posted: Sun May 22, 2016 5:36 pm
by marian
Не можеш да му зададеш максимален размер. Това, което му задаваш, е началния капацитет. Когато се напълни той си увеличава капацитета със 50% (фактора на растене зависи от компилатора т.е. може да не е 50%).
100 + 50% (50) = 150
150 + 50% (75) = 225
Прави се с цел при добавянето на нов елемент да не се търси място в RAM паметта, което отнеме време. Затова предварително си заделя място за няколко елемента и когато се напълни това място си заделя още.
Не знам дали го обясних правилно и разбираемо, но за всеки случай прочети това.