STL优先队列的使用

STL中有一个优先队列的容器可以使用。

【头文件】

queue 队列容器

vector 向量容器

【操作】

优先级队列支持的操作

q.empty()         如果队列为空,则返回true,否则返回false

q.size()            返回队列中元素的个数

q.pop()             删除队首元素,但不返回其值

q.top()             返回具有最高优先级的元素值,但不删除该元素

q.push(item)     在基于优先级的适当位置插入新元素

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<queue>
 4
 5 using namespace std;
 6
 7 struct cmp
 8 {
 9     bool operator()(int x,int y)
10     {
11         return x>y;
12     }
13 };
14
15 typedef struct nod
16 {
17     int x,y;
18     friend bool operator < (nod a,nod b)
19     {
20         return a.y>b.y;
21     }
22 } node;
23
24 int main()
25 {
26     priority_queue<int>simple;
27     priority_queue<int,vector<int>,cmp>define;
28     priority_queue<node>heap;
29
30     int a[10]={20,50,3202,20,503,12,56,62,50,80};
31
32     printf("Simple Test:\n");
33     for (int i=0;i<10;i++) simple.push(a[i]);
34     for (int i=1;i<=10;i++)
35     {
36         int temp=simple.top();
37         simple.pop();
38         printf("%d\n",temp);
39     }
40
41     printf("Define Test:\n");
42     for (int i=0;i<10;i++) define.push(a[i]);
43     for (int i=1;i<=10;i++)
44     {
45         int temp=define.top();
46         define.pop();
47         printf("%d\n",temp);
48     }
49
50     printf("Heap Test:\n");
51     node b[10]={{1,2},{2,100},{3,4},{4,50},{5,6},{6,7},{7,8},{8,9},{9,10},{10,11}};
52     for (int i=0;i<10;i++) heap.push(b[i]);
53     for (int i=1;i<=10;i++)
54     {
55         node temp=heap.top();
56         heap.pop();
57         printf("%d %d\n",temp.x,temp.y);
58     }
59
60     printf("%d",2<1);
61
62     return 0;
63 }
时间: 2024-10-10 13:47:50

STL优先队列的使用的相关文章

poj3253 Fence Repair STL优先队列

转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://poj.org/problem?id=3253 Description Farmer John wants to repair a small length of the fence around the pasture. He measures the fence and finds that he needs N (1 ≤ N ≤ 20,000) planks of wood, each

ZOJ2724_Windows Message Queue(STL/优先队列)

解题报告 题意: 看输入输出就很明白. 思路: 优先队列. #include <algorithm> #include <iostream> #include <cstring> #include <cmath> #include <queue> #include <vector> #include <cstdio> #include <map> using namespace std; struct node

STL+优先队列

1 #include<iostream> 2 #include<queue> 3 #include<string.h> 4 using namespace std; 5 const int INF =100000000; 6 const int MAXN =1000; 7 const int MAXM =100000; 8 int m,n; 9 int first[MAXN],d[MAXN]; 10 int u[MAXM],v[MAXM],w[MAXM],next[MA

STL 优先队列的自定义比较函数与 sort() 等泛型算法的自定义比较函数的区别

前言 最近在刷算法题,常常需要自定义比较函数作为作为函数对象送入 stl 中,遇到了下面的问题: 泛型算法 sort() 的比较函数是这么写: //sort() 实现元素间关系为递增的比较函数 struct cmp{ bool operator () (const T& a, const T& b) const { return a.x < b.x; } }; //或者这样bool operator < (const T& a, const T& b) cons

UVA - 136 Ugly Numbers(丑数,STL优先队列+set)

Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, ... shows the first 11 ugly numbers. By convention, 1 is included. Write a program to find and print the 1500'th ugly number. Input Ther

STL优先队列详解

优先队列 优先队列是一种抽象数据类型(Abstract Date Type,ADT),行为和队列类似,但是先出队的元素不是先进队列的元素,而是队列中优先级最高的元素. STL的优先队列定义在头文件<queue>和 (队列一样),用"priority_queue<int>pq"来声明: 最基本的用法 定义:priority_queue<int>pq: 操作: pq.empty() 如果队列为空返回真 pq.pop() 删除对顶元素 pq.push()

stl 优先队列(堆)

[模板]堆 题目描述 如题,初始小根堆为空,我们需要支持以下3种操作: 操作1: 1 x 表示将x插入到堆中 操作2: 2 输出该小根堆内的最小数 操作3: 3 删除该小根堆内的最小数 输入输出格式 输入格式: 第一行包含一个整数N,表示操作的个数 接下来N行,每行包含1个或2个正整数,表示三种操作,格式如下: 操作1: 1 x 操作2: 2 操作3: 3 输出格式: 包含若干行正整数,每行依次对应一个操作2的结果. 输入输出样例 输入样例#1: 5 1 2 1 5 2 3 2 输出样例#1:

C++STL——优先队列

一.相关定义 优先队列容器与队列一样,只能从队尾插入元素,从队首删除元素.但是它有一个特性,就是队列中最大的元素总是位于队首,所以出队时,并非按照先进先出的原则进行,而是将当前队列中最大的元素出队.这点类似于给队列里的元素进行了由大到小的顺序排序.元素的比较规则默认按元素值由大到小排序,可以重载"<"操作符来重新定义比较规则. 优先级队列可以用向量(vector)或双向队列(deque)来实现(注意list container不能用来实现queue,因为list的迭代器不是任意存

c++ STL 优先队列

操作1: 新建一个优先队列: ps:该操作需要包含头文件queue priority_queue < int , vector<int> , greeter <int> > t1; priority_queue < int , vector<int> , less <int> > t2; 解释: 接下来对解释一下新建时的三个参数: 其中第一个参数为优先队列的数据类型,可以是int,double之类的 其中第二个参数是指用什么容器来储存