Я начал печатать подробный ответ, объясняющий, как распределяется и освобождается память, но после того, как все это напечатал, я понял, что одни только проблемы с памятью не оправдывают, почему pop_front
нет, как предлагали другие ответы.
Наличие pop_front
в векторе, где дополнительная стоимость является еще одним указателем, в большинстве случаев оправданно.Проблема, на мой взгляд, push_front
.Если контейнер имеет pop_front
, то он также должен иметь push_front
, в противном случае контейнер не согласован.push_front
определенно дорого для векторного контейнера (если вы не сопоставите свои push
с вашими pop
с, что не является хорошим дизайном).Без push_front
вектор действительно тратит память, если выполняется много операций pop_front
без функциональности push_front
.
Теперь нужны pop_front
и push_front
для контейнера, который похож на вектор (произвольный доступ с постоянным временем), поэтому существует deque
.