c++ priority_map
时间: 2023-10-31 22:58:04 浏览: 90
在C语言中,可以使用优先队列(priority_queue)来实现优先级队列的功能。优先队列是一种特殊的队列,它的元素按照一定的优先级排列,每次访问时都会返回优先级最高的元素。
在C语言中,使用优先队列需要包含头文件<queue.h>,并使用结构体priority_queue来定义一个优先队列对象。优先队列对象的初始化是通过调用函数priority_queue_init()来实现的。
优先队列的主要操作包括入队(push)、出队(pop)、获取队首元素(top)等。入队操作主要是将元素按照优先级插入到队列中,出队操作主要是将优先级最高的元素从队列中移除并返回,获取队首元素操作主要是返回优先级最高的元素而不移除。
下面是一个示例代码,演示了如何使用优先队列:
```c
#include <stdio.h>
#include <queue.h>
int main() {
priority_queue_t q;
priority_queue_init(&q); // 初始化优先队列
for (int i = 0; i < 6; i++) {
priority_queue_push(&q, i); // 将元素压入队列
}
printf("%d\n", priority_queue_top(&q)); // 获取队首元素
return 0;
}
```
此外,优先队列还支持自定义比较函数来指定元素的优先级。比如,可以使用greater函数对象来定义数字小的优先级越大的优先队列,或者使用less函数对象来定义数字大的优先级越大的优先队列。
下面是另一个示例代码,展示了如何使用自定义比较函数的优先队列:
```c
#include <stdio.h>
#include <queue.h>
int main() {
priority_queue_t q;
priority_queue_init(&q, greater); // 使用greater函数对象定义优先队列
priority_queue_push(&q, 5);
priority_queue_push(&q, 2);
priority_queue_push(&q, 6
阅读全文