C++ STL学习笔记之:队列(queue)、双端队列(deque)与栈(stack)

C++ STL学习笔记之:队列(queue)、双端队列(deque)与栈(stack)

queue(队列)

定义一个名为 que 的存储 int 类型元素的队列:

queue<int> que;

入队操作:

que.push(a);    // 其中a是一个int类型的变量

出队操作:

que.pop();

但是在队列为空时,进行出队操作会出错。所以需要先判断一下队列是否为空。

判断队列是否为空:

que.empty()

它返回一个 bool 值,如果队列为空返回 true,否则返回 false。

队首元素:

que.front();

队尾元素:

que.back();

队列中元素个数:

que.size();

清空队列:
队列没有单独的函数用来清空它,所以我们可以使用如下方法来清空队列:

while (!que.empty())
    que.pop();

双端队列(deque)

区别于一般的队列,只能从队尾入队,从队首出队;
双端队列是可以同时从队首入队和出队,也可以同时从队尾入队和出队的队列。

定义一个名为 que 的存放 int 类型的双端队列(deque):

deque<int> que;

队首元素:

que.front()

队尾元素:

que.back()

判断双端队列是否为空:

que.empty()

获得双端队列的元素个数:

que.size()

从队首入队:

que.push_front(a);

从队尾入队:

que.push_back(a);

从队首出队:

que.pop_front();

从队尾出队:

que.pop_back();

清空双端队列:

因为双端队列没有 pop() 方法,所以我们可以用 pop_front 或者 pop_back 代替。

while (!que.empty())
    que.pop_front();

while (!que.empty())
    que.pop_back();

当然,双端队列还有更方便的清空它自己的方法:

que.clear();

栈(stack)

既然讲了队列、双端队列,我们再来学习(复习一下)栈(stack)的使用。

定义一个名为 stk 的存放 int 类型的栈:

stack<int> stk;

获得栈顶元素:

stk.top()

入栈操作:

stk.push(a);

出栈操作:

stk.pop();

判断栈是否为空:

stk.empty()

栈中元素个数:

stk.size()

清空栈:

while (!stk.empty()) stk.pop();