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 действительно ограничивает пользовательский интерфейс для этого внутреннего контейнера. Эксплуатационные характеристики операций в точности соответствуют характеристикам базового контейнера.