С http://www.cplusplus.com/reference/stl/vector/
Векторные контейнеры реализованы как
динамические массивы; Как обычно
массивы, векторные контейнеры имеют свои
элементы хранятся в непрерывном хранилище
места, что означает, что их
элементы могут быть доступны не только
используя итераторы, но и смещения
на регулярных указателях на элементы.
Но в отличие от обычных массивов, хранилище в
векторы обрабатываются автоматически,
позволяя расширить его и
по мере необходимости.
Кроме того, векторы обычно могут содержать любой объект - поэтому вы можете создать класс для хранения информации о транспортных средствах, а затем сохранить парк в векторе.
Приятной особенностью векторов, помимо изменения размера, является то, что они по-прежнему допускают доступ к отдельным элементам через постоянное время по индексу, подобно массиву.
Компромисс для изменения размера заключается в том, что при достижении текущей емкости он должен перераспределять, а иногда и копировать, больше памяти. Однако большинство алгоритмов увеличения емкости удваивают емкость каждый раз, когда вы сталкиваетесь с барьером, поэтому вы никогда не попадете в нее больше, чем log2 (куча доступна), которая оказывается, пожалуй, в десятки раз в худшем случае за время работы программы.
-Adam