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

C++ JAVA
Post Reply
respec7_m3
Нов
Нов
Posts: 170
Joined: Wed Jun 30, 2010 4:42 pm

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

Post by respec7_m3 » Sat May 21, 2016 11:10 pm

Инициализирам вектор от тип Int и му задавам размер 100 елемента, в момента, в който му подам 101 елемента той увеличава капацитета си на 150, подавам му 151 елемента, капацитета се увеличава на 225? На какъв принцип работи това увеличаване, защото всеки път го увеличава с различни стойности и защо изобщо се увеличава след като аз съм му казал колко голям да бъде?

User avatar
marian
Турист
Турист
Posts: 568
Joined: Fri Mar 14, 2008 1:13 pm
Answers: 151
Location: България

Post by marian » Sun May 22, 2016 5:36 pm

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

Post Reply