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