Std::vector vs std:: stack
В чем разница между std::vector
и std::stack
?
Очевидно, что векторы могут удалять элементы в коллекции (хотя и намного медленнее, чем список), тогда как стек создается как коллекция LIFO.
Тем не менее, быстрее стеки для обработки конечных элементов? Является ли это связанным списком или динамически перераспределенным массивом?
Я не могу найти много информации о стеках, но если я правильно их представляю (они похожи на фактический стек потоков: push, pop и т.д. - вместе с этим методом top()
), тогда они кажутся совершенными для управления стеками окон.
Ответы
Ответ 1
A stack
не является контейнером; это адаптер контейнера. Он имеет vector
, deque
или аналогичный контейнер, который хранится как элемент, который фактически содержит элементы. Помните: он объявлен как:
template<
class T,
class Container = std::deque<T>
> class stack;
Все stack
действительно ограничивает пользовательский интерфейс для этого внутреннего контейнера. Эксплуатационные характеристики операций в точности соответствуют характеристикам базового контейнера.