不了解适配器的读者可以先去看一看这一篇博客:C++ 适配器-CSDN博客
栈数据结构介绍
我们平时洗碗的时候,叠成一层层的碗最后只能从上面往下面开始拿;平时箱子里面叠的衣服,也是只能从上面慢慢拿。先放进去的东西后拿出来,这种内存特点的数据结构就叫栈。
就像一个只有单边口的容器,数据只能从上面进,也只能从上面出。
针对于这种内存特点,我们可以用数组(或顺序表)来实现,从数组末尾进行插入和删除;同时我们也可以用链表,把链表的头作为栈的出口进行进出(链表的头插和头删)操作。甚至双向链表情况下两头都可以;同时我们也可以用双端队列,双端队列的头插头删和尾插尾删操作都很便利。
因为stack可以用很多其他的数据结构来实现,所以stack就被定义为了迭代器而不是容器,因为本质还是其他容器的套用。
stack的相关函数
stack的函数很少,因为它的结构限制很多,只允许一方进一方出,导致什么迭代器等都没有。
构造函数
第一个就是只传容器类型,第二个。和第一个差不多,就是缺省参数的右值引用。后面的就是加了一个内存池。
具体看这个例子就行了,我们用的最多的就是默认构造。
empty
判断是否为空,是为真反之为假
size
返回栈的大小
top
返回栈顶的元素
push
入栈一个元素
emplace
和push功能一样,但是在某些场景下比push的效率高,目前作者还不知其原理。
pop
出栈一个元素
swap
保证容器一样的情况下交换两个栈的内部数据。
适配器stack的实现
stack函数少,底层又是用的已经实现好的容器,所以很方便实现:
标签:容器,适配器,C++,链表,push,数据结构,stack From: https://blog.csdn.net/2301_80772499/article/details/141169225