Распределители
C ++ не поддерживают ничего, как C realloc
.Всякий раз, когда vector
требуется больше памяти, ему приходится выделять новое хранилище, переходить от старого к новому и освобождать старое.
В любом случае realloc
не подойдет vector
.При типичных распределителях realloc
спасет вас от тяжелой операции копирования, только если вы уменьшите ее размер или, в некоторых случаях, увеличитесь всего на несколько байтов.vector
никогда не уменьшается, а растет только очень большими шагами.
Обратите внимание, что поддержка перемещения - это новое поведение в C ++ 2011. Предыдущие версии будут копироваться.