栈,队列,优先队列详解
栈的概念,应用与实现
一. 栈的概念
首先栈是一个后进先出的数据结构,对于栈来说,只有一种插入和删除的方式就是通过头来实现,也就是从头压入,从头弹出。当通过STL调用栈的时候需要使用头文件 #include<stack>
二. 栈的应用
对于栈来说我们都比较熟悉的几个函数分别是
1.push()插入函数
2.pop()弹出函数
3.top()返回栈顶函数
4.size()返回栈中元素个数函数
5.emoty()判断栈是否为空函数
具体应用实现如下:
三. 栈的底层实现
在STL中栈和vector,string这类容器是不一样的,vector和string其实本质上就是数组和字符串,所以可以通过迭代器来实现,而栈本身不是一个容器,而是要使用其他容器来实现的,比如我们可以通过vector来实现栈,如下:
此处定义的泛型中的Container表示的是一个容器适配器,这里也给了他一个缺省值,所以这里我们Container就代表vector类型,所以可以看到我们定义了一个vector类型的变量_con。并且通过vector实现了栈,比如插入操作,直接使用vector中的插入函数,比如pop()操作,直接将vector中尾部元