0.总结
栈头文件
#include<stack>
队列头文件
#include<queue>
栈和队列成员函数相差无几:
//都有
pop()
push()
size()
empty()
swap()
emplace()
//栈
top()
//队列
front()
back()
1. 堆
堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分配内存,对其访问和对一般内存的访问没有区别。堆是指程序运行时申请的动态内存,而栈只是指一种使用堆的方法(即先进后出)。
2. 栈(stack)
2.1 栈基础知识
stack——先进后出,删除与加入均在栈顶操作
栈也称为堆栈,是一种线性表。
堆栈的特性: 最先放入堆栈中的内容最后被拿出来,最后放入堆栈中的内容最先被拿出来, 被称为先进后出、后进先出。
堆栈中两个最重要的操作是PUSH和POP,两个是相反的操作。
PUSH:在堆栈的顶部加入一 个元素。
POP:在堆栈顶部移去一个元素, 并将堆栈的大小减一。
2.2 栈成员函数详解
参考:https://blog.csdn.net/gscsdlz/article/details/52169463
C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构。
头文件为:
#include <stack>
c++ stl栈stack的成员函数介绍
操作 比较和分配堆栈
empty() 堆栈为空则返回真
pop() 移除栈顶元素
push() 在栈顶增加元素
emplace()
push()函数和emplace()都是在栈这个容器的顶部插入一个新的元素。
- push()
实际上是调用的底层容器的push_back()函数,新元素的值是push函数参数的一个拷贝。
- emplace()
实际上是调用的底层容器的emplace_back()函数,新元素的值是在容器内部就地构造的,不需要移动或者拷贝
stack的emplace也可以用在普通的基本类型上。
size() 返回栈中元素数目
top() 返回栈顶元素
swap() 交换两个栈的内容(所有元素),
swap()函数通过非成员函数swap()来交换底层容器,时间复杂度O(1) 用法:a.swap(b)
堆与栈的区别总结如下:
3. 队(queue)
队列也是一种特殊的线性表。不同于栈所服从的先进后出的原则,队列的原则是先进先出。
队列在队头做删除操作,在队尾做插入操作:
参考多篇文章: