摘要:本文主要介绍了两种容器——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 }