stack堆栈是一个后进先出的线性表,插入和删除元素都在表的一端进行。

  stack堆栈的使用方法:

  采用push()方法将元素入栈;

  采用pop()方法将元素出栈;

  采用top()方法访问栈顶元素;

  采用empty()方法判断堆栈是否为空;

  采用size()方法返回堆栈中有几个元素。

queue队列容器是一个先进先出的线性存储表,元素的出入只能在队尾,元素的删除只能在队首。

  queue队列容器的使用方法:

  入队时使用push()方法;

  出队时使用pop()方法;

  读取队首元素时front()方法;

  读取队尾元素时back()方法;

  判断是否为空时empty()方法;

  获取队列当前的元素数目size()方法。

可以使用队列写一写广搜的题。

priority——queue优先队列容器和队列容器一样,只能从队尾插入元素,从队首删除元素。但是不同的是每一个进入队列的元素都会被安排在合适的地方,以至于出队的时候出队的元素总是最优的。故而名曰优先队列。

  priority_queue优先队列的使用方法:

  入队push(),出队pop(),读取队首元素时区分与队列容器的front()而是top(),另外还有判断队列是否为空的empty()和读取队列元素的数量size()等方法。

  重定义比较规则的方法,第一种如果元素的类型是结构体,则直接在结构体中重载“<”操作符;对应的联系是HDU 1254 Rescue。

 struct Node {
int s, t;//步数和时间
bool operator < (const Node &a) const {//返回值类型,函数名,参数列表,const限定符
return a.t < t;//按t从小到大排,反之为>即可
}
};

  如果不是结构体可以重载"()"操作符。另外注意自定义优先级的比较函数时,注意在定义优先队列时声明在<>内,否则是不会按照你定义的优先级出队的。另外声明的时候也有一点区别,需要说明内部结构,不过一般将非结构体排序,用sort也行,能掌握更好。

 struct qcmp {
bool operator () (const int &a, const int &b) {
return a > b;//按照从小到大排,反之<即可,和结构体中的相反
}
};
priority_queue<int, vector<int>, qcmp> pq;

stack堆栈容器、queue队列容器和priority_queue优先队列容器(常用的方法对比与总结)的更多相关文章

  1. 第20章 priority_queue优先队列容器

    /* 第20章 priority_queue优先队列容器 20.1 priority_queue技术原理 20.2 priority_queue应用基础 20.3 本章小结 */ // 第20章 pr ...

  2. stack栈和Queue队列

    1.push将对象插入 System.Collections.Generic.Stack<T> 的顶部. Stack st = new Stack(); //栈是先进后出 st.Push( ...

  3. Java数据类型Stack栈、Queue队列、数组队列和循环队列的比较

    判断括号是否匹配:调用java本身 import java.util.Stack; public class Solution { public boolean isValid(String s){ ...

  4. STL容器(Stack, Queue, List, Vector, Deque, Priority_Queue, Map, Pair, Set, Multiset, Multimap)

    一.Stack(栈) 这个没啥好说的,就是后进先出的一个容器. 基本操作有: stack<int>q; q.push(); //入栈 q.pop(); //出栈 q.top(); //返回 ...

  5. 第19章 queue队列容器

    /* 第19章 queue队列容器 19.1 queue技术原理 19.2 queue应用基础 19.3 本章小结 */ // 第19章 queue队列容器 // 19.1 queue技术原理 // ...

  6. java集合类——Stack栈类与Queue队列

    Stack继承Vector类,它通过五个操作对类 Vector 进行了扩展. 栈是 后进先出的. 栈提供了通常的 push 和 pop 操作,以及取堆栈顶点的 peek 方法.测试堆栈是否为空的 em ...

  7. Stack栈类与、Queue队列与线性表的区别和联系

    栈和队列都属于特殊的线性表   一.定义   1.线性表(linear list): 是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列.数据元素是一个抽象的符号,其具体含义在不同的情 ...

  8. C#部分---特殊集合:stack栈集合、queue队列集合、哈希表集合。

    1.stack栈集合:又名 干草堆集合 栈集合 特点:(1)一个一个赋值 一个一个取值(2)先进后出实例化 初始化 Stack st = new Stack(); //添加元素用push st.Pus ...

  9. Stack集合 Queue队列集合 Hashtable哈希表

    Stack集合 干草堆集合 栈集合 栈;stack,先进后出,一个一个赋值,一个一个取值,安装顺序来. 属性和方法 实例化 初始化 Stack st = new Stack(); 添加元素 个数 Co ...

随机推荐

  1. 怎样SQL存储过程中执行动态SQL语句

    MSSQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_executesql;通常,sp_executesql则更具有优势,它提供了输入输出接口,而EXEC没有.还有一个最大的好处就 ...

  2. 分形之康托(Cantor)三分集

    1883年,德国数学家康托(G.Cantor)提出了如今广为人知的三分康托集,或称康托尔集.三分康托集是很容易构造的,然而,它却显示出许多最典型的分形特征.它是从单位区间出发,再由这个区间不断地去掉部 ...

  3. 如何把jar包发布到maven私服

    1.格式 mvn deploy:deploy-file -DgroupId=com.qiyi -DartifactId=sphinx -Dversion=1.0 -Dpackaging=jar -Df ...

  4. 工作随笔——获取当前Java程序PID

    小知识,记录下: JVM:1.8 // spring boot 中可以使用 String pid = ManagementFactory.getRuntimeMXBean().getSystemPro ...

  5. Windows核心编程:第6章 线程基础

    Github https://github.com/gongluck/Windows-Core-Program.git //第6章 线程基础.cpp: 定义应用程序的入口点. // #include ...

  6. Cordova - Windows 下创建第一个 Android App

    官方文档: Create your first Cordova app Android Platform Guide 安装 JDK 和 Android SDK 注意: 需要将 JK 和 Android ...

  7. ModelValidator基于元数据的验证

    ModelValidator主要是应用在ModelMetadata元数据的类型上或类型属性上.它是验证的基础类型,所有的ModelValidatorProviders.DataAnnotationVa ...

  8. 【转】Windows IIS注册asp 此操作系统版本不支持此选项 错误解决方法

    原文:https://blog.csdn.net/sweety820/article/details/79538973 更新Win10,原来的IIS站点访问不了,原因是因为IIS 没有.net 4.5 ...

  9. LOJ#3052. 「十二省联考 2019」春节十二响(启发式合并)

    题面 传送门 题解 先考虑一条链的情况,对于\(1\)号点来说,肯定是左子树中最大值和右子树中最大值一组,左子树中次大值和右子树中次大值一组--以此类推 那么如果不是一条链呢?我们把所有的链合并起来就 ...

  10. Swift5 语言指南(二十五) 自动引用计数(ARC)

    Swift使用自动引用计数(ARC)来跟踪和管理应用程序的内存使用情况.在大多数情况下,这意味着内存管理在Swift中“正常工作”,您不需要自己考虑内存管理.当不再需要这些实例时,ARC会自动释放类实 ...