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. SRM466

    250pt: 给出一个数n(n <= 10^10),问至少修改几位能使其变成完全平方数. 思路:     直接枚举平方根,然后统计.     注意枚举时要枚举到比她大.. #line 7 &qu ...

  2. Android-Kotlin-函数表达式&String与Int转换$异常处理

    Kotlin的函数表达式: package cn.kotlin.kotlin_base03 /** * 函数第一种写法 */ fun addMethod1(number1: Int, number2: ...

  3. Spring与多线程

    前言背景 在做新项目,作为中间件的项目,主要做数据服务.这次想把项目做的简洁一些,之前用的什么ActiveMq等中间件产品,这次全部不用,能自己实现就自己实现.自己用BlockingQueue阻塞队列 ...

  4. ASP.NET MVC5 高级编程-学习日记-第三章 视图

    开发人员之所以花费大量时间来重点设计控制器和模型对象,是因为在这些领域中,精心编写的整洁代码是开发一个可维护Web应用程序的基础. 3.1 视图的作用 视图的职责是向用户提供用户界面.当控制器针对被请 ...

  5. bower 安装后 jade 引用404问题

    这个问题困扰我接近2小时,这是我在stackoveflow 上面挖到的 原文地址:http://stackoverflow.com/questions/21821773/configure-node- ...

  6. Android 四大组件之“ BroadcastReceiver ”

    前言 Android四大组件重要性已经不言而喻了,今天谈谈的是Android中的广播机制.在我们上学的时候,每个班级的教室里都会装有一个喇叭,这些喇叭都是接入到学校的广播室的,一旦有什么重要的通知,就 ...

  7. C语言通过匿名管道实现反弹式CMDShell

    #pragma comment(lib,"ws2_32.lib") #ifdef _MSC_VER #pragma comment( linker, "/subsyste ...

  8. 通过Metasploit生成各种后门

    生成windows后门 1.首先生成后门 [root@localhost ~]# msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ ...

  9. ZJOI Round2游记

    虽然一试很惨但是二试还是要来玩一下的 Day 0 到余姚了,然后到余姚边上的宾馆住来下来 顺便一问老师们对边上是不是有什么误解-- 吃完晚饭就回宾馆颓了 话说半夜真刺激--住隔壁那一位手突然骨折了,本 ...

  10. BZOJ 2200--[Usaco2011 Jan]道路和航线(最短路&拓扑排序)

    2200: [Usaco2011 Jan]道路和航线 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1128  Solved: 414[Submit] ...