STL之stack容器和queue容器

Posted lzy820260594

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STL之stack容器和queue容器相关的知识,希望对你有一定的参考价值。

摘要:本文主要介绍了两种容器——stack容器和queue容器。

1、基本概念

  stack容器 queue容器

容器介绍

stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口,

形式如图所示。stack容器允许新增元素,移除元素,取得栈顶元素,但是除了

最顶端外,没有任何其他方法可以存取stack的其他元素。换言之,stack不允

许有遍历行为。

有元素推入栈的操作称为:push,将元素推出stack的操作称为pop.

Queue是一种先进先出(First In First Out,FIFO)的数据结构,

它有两个出口,queue容器允许从一端新增元素,从另一端移

除元素。

迭代器

Stack所有元素的进出都必须符合”先进后出”的条件,只有stack顶端的元素,

才有机会被外界取用。Stack不提供遍历功能,也不提供迭代器。

Queue是一种先进先出(First In First Out,FIFO)的数据结构,

它有两个出口,queue容器允许从一端新增元素,从另一端移除元素。

 

2、常用API

  stack容器 queue容器
API 意义 API 意义
构造函数

stack<T> stkT

 

stack采用模板类实现,

stack对象的默认构造形式

 queue<T> queT  queue采用模板类实现,queue对象的默认构造形式

stack(const stack &stk)

拷贝构造函数

 queue(const queue &que)  拷贝构造函数
存取、插入和删除操作     push(elem)  往队尾添加元素
pop() 从队头移除第一个元素
back() 返回最后一个元素
front() 返回第一个元素

赋值操作

stack& operator=(const stack &stk)
重载等号操作符  queue& operator=(const queue &que)  重载等号操作符

数据存取操作

 

push(elem) 向栈顶添加元素       
pop() 从栈顶移除第一个元素
top() 返回栈顶元素

stack大小操作

                    empty()

 判断堆栈是否为空  empty()  判断队列是否为空

                      size()

返回堆栈的大小 size() 返回队列的大小

3、代码示例

 1 #include<iostream>
 2 #include <stack>
 3 #include <queue>
 4 
 5 using namespace std;
 6 
 7 void test01() 
 8     stack<int>s;  //定义一个stack容器
 9     s.push(10);   //将数压入容器
10     s.push(20);
11     s.push(30);
12     s.push(40);
13 
14     while (s.size()!=0)
15     
16         cout << s.top() << endl;  //只可以栈顶输出
17         s.pop();    //将输出的数弹出  , 输出40,30,20,10
18     
19     cout << s.size() << endl;  //完全弹出变成0
20 
21 
22 void test02() 
23     queue<int>q;
24     q.push(10);
25     q.push(20);
26     q.push(30);
27     q.push(40);
28 
29     while (!q.empty())
30     
31         cout << q.front() << endl;
32         cout << q.back() << endl;  //头尾均可以输出
33 
34         q.pop();  //将队头弹出
35     
36     cout << q.size() << endl;
37 
38 
39 int main() 
40     test01();
41     test02();
42     system("pause");
43     return 0;
44 

以上是关于STL之stack容器和queue容器的主要内容,如果未能解决你的问题,请参考以下文章

STL之stack等容器适配器

STL容器适配器stack和queue

STL之stack 和 queue

C++提高编程STL-stack&queue 容器

stl容器学习——queue,stack,list与string

STL详解—— stack和queue的模拟实现