acm的STL容器之队列篇

优先队列,即Priority Queues

1.简单介绍一下队列(介绍功能,不作分析)

C++队列是一种容器适配器,它给予程序员一种先进先出(FIFO)的数据结构。
1.back() 返回一个引用,指向最后一个元素
2.empty() 如果队列空则返回真
3.front() 返回第一个元素
4.pop() 删除第一个元素
5.push() 在末尾加入一个元素
6.size() 返回队列中元素的个数

简介:队列可以用线性表(list)或双向队列(deque)来实现(注意vector container 不能用来实现queue,因为vector 没有成员函数pop_front!):
queue<list<int>> q1;
queue<deque<int>> q2;
其成员函数有“判空(empty)” 、“尺寸(Size)” 、“首元(front)” 、“尾元(backt)” 、“加入队列(push)” 、“弹出队列(pop)”等操作。

 int main()
{
     queue<int> q;
     q.push(4);
     q.push(5);
     printf("%d\n",q.front());
     q.pop();
 }

2.Priority Queues(优先队列)

C++优先队列类似队列,但是在这个数据结构中的元素按照一定的断言排列有序。
1.empty() 如果优先队列为空,则返回真
2.pop() 删除第一个元素
3.push() 加入一个元素
4.size() 返回优先队列中拥有的元素的个数
5.top() 返回优先队列中有最高优先级的元素

优先级队列可以用向量(vector)或双向队列(deque)来实现(注意list
container 不能用来实现queue,因为list 的迭代器不是任意存取iterator,而pop
中用到堆排序时是要求randomaccess iterator 的!):
priority_queue<vector<int>, less<int>> pq1; // 使用递增less<int>函数对象排序
priority_queue<deque<int>, greater<int>> pq2; // 使用递减greater<int>函数对象排序
其成员函数有“判空(empty)” 、“尺寸(Size)” 、“栈顶元素(top)” 、“压栈(push)” 、“弹栈(pop)”等。

1 #include <iostream>
 2 #include <queue>
 3 using namespace std;
 4
 5 class T {
 6 public:
 7     int x, y, z;
 8     T(int a, int b, int c):x(a), y(b), z(c)
 9     {
10     }
11 };
12 bool operator < (const T &t1, const T &t2)
13 {
14     return t1.z < t2.z; // 按照z的顺序来决定t1和t2的顺序
15 }
16 main()
17 {
18     priority_queue<T> q;
19     q.push(T(4,4,3));
20     q.push(T(2,2,5));
21     q.push(T(1,5,4));
22     q.push(T(3,3,6));
23     while (!q.empty())
24     {
25         T t = q.top();
26         q.pop();
27         cout << t.x << " " << t.y << " " << t.z << endl;
28     }
29     return 1;
30 }

(待完善)

原文地址:https://www.cnblogs.com/VsKendo/p/9320512.html

时间: 2024-08-30 02:32:57

acm的STL容器之队列篇的相关文章

ACM常用STL容器

1 // STL(标准模板库),由三大部分组成:容器,算法,迭代器 2 3 4 // STL六大组件:container(容器),algorthm(算法),iterator(迭代器) 5 // function object(仿函数),adaptor(适配器),allocator(空间适配器) 6 7 // STL容器 8 9 // vector 10 // deque(双端数组) 11 // stack 12 // queue 13 // list(链表模型) 14 // priotry_qu

acm的STL应用之vector篇

2018-07-12 在acm中c++使用vector Vector是什么? 1.vector介绍以及常用指令 专业来说: vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库. vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象, 简单来说: vector是一个能够存放任意类型的动态数组,能够增加和压缩数据. 长度灵活,不需要维护长度. 可以装下所有基本数据类型,也可以装用户定义的结构体 需要声明头文件以及命名空间.

c++常见的STL容器

c++常见的STL容器 1 队列—queue 我想很多人都知道这个神器—queue 队列queue(FIFO),!!需要头文件 #incldue<queue> 有几种常见操作: 1.queue<类型> q 定义一个某类型的队列q 2.q.push(元素) 把一个元素压入队列q的队首 3.q.pop() 弹出队尾元素 4.q.size() 返回队列中元素的个数 5.q.empty() 判断队列是否为空,为空则返回1,不为空则返回0 6.q.front()返回队首元素 2 栈—stac

【C/C++学院】0828-STL入门与简介/STL容器概念/容器迭代器仿函数算法STL概念例子/栈队列双端队列优先队列/数据结构堆的概念/红黑树容器

STL入门与简介 #include<iostream> #include <vector>//容器 #include<array>//数组 #include <algorithm>//算法 using namespace std; //实现一个类模板,专门实现打印的功能 template<class T> //类模板实现了方法 class myvectorprint { public: void operator ()(const T &

STL学习——Stack/Queue篇

STL学习--Stack/Queue篇 Stack 概述 stack是一种先进先出的数据结构,只有一个出口,stack允许新增元素,移除元素,取得最顶端元素.但除了最顶端外,没有任何办法可以存取stack其他元素.即不允许遍历行为. 实现 stack实现是以容器为底部结构的,将容器的接口改变,使其符合"先进先出"特性,便形成了一个栈.具体实现可以将底部deque的头端开口封闭,便实现了stack.因为stack具有"修改某物接口,形成另一种风貌"性质,故称为&quo

STL 容器

标准库为相关对象的存储集合提供了各种类型安全容器.容器是类模板:在声明容器变量时,你可以指定该容器将保存的元素类型.可以使用初始值设定项列表构造容器.它们具有用于添加和移除元素以及执行其他操作的成员函数.可使用迭代器循环访问容器中的元素以及访问单个元素.可以通过使用其成员函数和运算符以及全局函数来显式使用迭代器.还可以隐式使用它们,例如通过使用范围 for 循环.所有 STL 容器的迭代器都有一个通用接口,但是每个容器会定义自己的专用迭代器. 容器可以分为三个类别:序列容器.关联容器和容器适配器

【C++】STL容器归纳总结(一)顺序容器

顺序容器: 顺序容器包括:vector.deque.list.forward_list.array以及string vector:可变大小数组,即将元素保存在一段连续的内存空间中.支持快速随机访问.在尾部之外的位置插入删除元素可能会很慢. PS:当元素已经占满了预先分配的内存空间,插入新的元素时,开辟一段新的内存空间,大小为之前vector的两倍,再将vector内的元素拷贝到新的内存空间内. vector的插入删除操作会造成迭代器的失效 list:双向链表.只支持双向顺序访问.在list任何位

STL容器之优先队列

STL容器之优先队列 优先级队列,以前刷题的时候用的比较熟,现在竟然我只能记得它的关键字是priority_queue(太伤了).在一些定义了权重的地方这个数据结构是很有用的. 先回顾队列的定义:队列(queue)维护了一组对象,进入队列的对象被放置在尾部,下一个被取出的元素则取自队列的首部.priority_queue特别之处在于,允许用户为队列中存储的元素设置优先级.这种队列不是直接将新元素放置在队列尾部,而是放在比它优先级低的元素前面.标准库默认使用<操作符来确定对象之间的优先级关系,所以

STL容器之优先队列(转)

STL容器之优先队列 原地址:http://www.cnblogs.com/summerRQ/articles/2470130.html 优先级队列,以前刷题的时候用的比较熟,现在竟然我只能记得它的关键字是priority_queue(太伤了).在一些定义了权重的地方这个数据结构是很有用的. 先回顾队列的定义:队列(queue)维护了一组对象,进入队列的对象被放置在尾部,下一个被取出的元素则取自队列的首部.priority_queue特别之处在于,允许用户为队列中存储的元素设置优先级.这种队列不