1 简介
Stack:后进先出(LIFO)
Queue:先进先出(FIFO)
Priority Queue:按照排序准则,自动将元素排序的Queue,下一个元素优先级总是最高
bitset:位域
2 Stack<>
1)头文件stack定义注意
- 头文件
#include <stack>
- 头文件内容
namespace std{
template <typename T,
typename Container = deque<T>>
class stack;
}
参数一表示类型,参数二表示此适配器使用的是deque。为什么使用deque不使用vector?因为deque移除元素时会释放内存,并且不必重分配时复制所有元素。
当然也可以使用其他容器来容纳元素,只需要此容器拥有back(),push_back(),pop_back()函数即可:
std::stack<int, std::vector<int>> st;
2)常用函数
st.push()//元素放进stack内
st.top()//返回下一个元素,可以对此元素值进行修改
st.pop()//stack中删除元素
st.empty()//stack是否为空
st.size()//stack的大小
注意:
pop只是删除并不返回,因此需要top与pop配合使用。
时常检查是否为空。
3 Queue(队列)
是一个数据缓冲构造。
1)头文件定义注意
#include <queue>
在头文件中的定义与stack同样使用了默认的deque。
2)常用函数
st.push()//进入队列
st.pop()//出队,但是并不返回元素,只是删除
st.front()//返回先进入的元素,也就是队头元素
st.back()//返回最后进入的元素,也就是队尾元素
注意:
front与back只返回元素,并不删除,而pop只删除,并不返回元素。
4 Priority Queue
带优先级的访问队列,优先级规则可以自己传入一个模板函数。
其函数为push、top、pop。
但是其使用的容器是vector。