常用查询库 stack、queue、priority_queue

来源:互联网 发布:淘宝代销上架编辑技巧 编辑:程序博客网 时间:2024/06/06 00:13

常用查询库 stack、queue、priority_queue

  • 常用查询库 stackqueuepriority_queue
    • stack
      • stack声明
      • stack常用操作
      • Tip
    • queue
      • queue声明
      • queue常用操作
    • priority_queue
      • priority_queue声明
      • priority_queue常用操作

stack

队列是一种后入先出的数据结构
Last in First out;

stack声明

stack定义在头文件<stack>中,用stack<int>s的方式声明一个栈。

stack常用操作

1.  压栈操作        s.push_back();2.  出栈操作        s.pop();3.  返回栈顶元素    s.top();3.  判断空栈        s.empty();               如果栈为空返回true,否则返回false 4.  栈内元素个数     s.length();/s.size();

Tip

栈没有clear()操作,若是要清空一个栈,可以写成

while(!s.empty()){    s.pop();}

queue

队列是一种先入后出的数据结构
Fisrt in First out;

queue声明

queue定义在头文件<queue>中,用queue<int>s的方式声明一个队列。

queue常用操作

1.  入队列操作        s.push();2.  出队列操作        s.pop();3.  返回队头元素      s.front();3.  判断空队列        s.empty();               如果栈为空返回true,否则返回false 4.  队列内元素个数     s.length();/s.size();

priority_queue

优先队列行为有些像队列,但先出队列的元素不是先进队列的元素,而是队列中优先级最高的元素。

priority_queue声明

priority_queue也定义在头文件<queue>中,用priority_queue<int>s的方式声明一个队列。
此int型优先队列是 越小的整数优先级别越低的队列。
事实上,其原型为

priority_queue<Type, Container, Functional>

Type 为数据类型, Container 为保存数据的容器,Functional 为元素比较方式。
Container 必须是用数组实现的容器,比如 vector, deque 但不能用 list.
STL里面默认用的是 vector. 比较方式默认用 operator<
因此,若是缺省了第三个参数的话,只要定义了“小于”运算符,即可使用优先队列。
特殊情况下,需要自定义比较方式:

struct cmp(){    bool operator()(const ElemType a,const ElemType b)const{        return …………;    }};

则优先队列声明为

priority_queue<Type, Container, cmp>s;

priority_queue常用操作

几乎同queue
值得注意的是,取队首元素不用s.front();而是使用s.top();

原创粉丝点击