C++ STL 之 stack & queue

"Standard Template Library"

Posted by leiyiming on July 8, 2016

STL 常用容器 stack & queue 的详解

stack & queue 概述

stack 是一种先进后出(First In Last Out, FILO)的数据结构。 queue 是一种先进先出(First In First Out, FIFO)的数据结构。 stack 只有一个出入口,它允许在其最顶端压入弹出数据。 queue 有一个入口与一个出口,它只允许在尾端压入数据,在首端弹出数据。 它们相同点都是不允许遍历,所以它们都没有迭代器。其次,它们都是以一个 deque 作为底层容器来实现特殊的功能,是一种 adapter , 所以它们并不被视为容器类,而是容器适配器(container adapter)。

stack & queue 实现deque 是一个双向开口的容器,所以只要将一端封闭,就可以很简单地实现 stack 所需的功能。 将 deque 一端的插入封闭,另一端的弹出封闭,就实现了 queue 的功能。

stack & queue 基本操作

stack

reference top();                  //返回顶部的引用
void push(const value_type& x);   //压栈
void pop();                       //弹栈
size_type size();                 //返回栈大小
bool empty();                     //返回是否为空

queue

reference front();                //返回前端的引用
reference back();                 //返回后端的引用
void push(const value_type& x);   //压入队列
void pop();                       //弹出队列
size_type size();                 //返回队列大小
bool empty();                     //返回是否为空

后记

stack & queue 都是算法设计中常用的数据结构,STL 均默认基于 deque 实现它们。当然也可以用 list 作为底层容器实现它们,只需要类似 stack<int, list<int>> istack 的声明就可以了