1. 简介
优先队列是一种极其特殊的队列,他与标准的队列使用线性结构进行计算不同,优先队列的底层是以散列的状态(非线性)表现的,他与标准的队列有如下的区别,标准的队列遵从严格的先进先出,优先队列并不遵从标准的先进先出,而是对每一个数据赋予一个权值,根据当前队列权值的状态进行排序,使得权值最大(或最小)的永远排在队列的最前面。
2. 相关文件
由于其属于队列的一种,因此可以直接使用队列的头文件#include
3. 初始化
priority_queuepriority_queue //直接输入元素则使用默认容器和比较函数 |
与往常的初始化不同,优先队列的初始化涉及到一组而外的变量,这里解释一下初始化:
a) T就是Type为数据类型
b) Container是容器类型,(Container必须是用数组实现的容器,比如vector,deque等等,但不能用 list。STL里面默认用的是vector)
c) Compare是比较方法,类似于sort第三个参数那样的比较方式,对于自定义类型,需要我们手动进行比较运算符的重载。与sort直接Bool一个函数来进行比较的简单方法不同,Compare需要使用结构体的运算符重载完成,直接bool cmp(int a,int b){ return a>b; } 这么写是无法通过编译的。
使用的举例有:
struct cmp{ //这个比较要用结构体表示 bool operator()(int &a, int &b) const { return a > b; }}; priority_queue q; //使用自定义比较方法priority_queue pq; |
4. 常用接口
我们预先通过priority_queue q创建了一个队列,命名为q,方便举例。
a)大小size()
返回队列元素的个数
函数原型:size_type size() const;
cout
相关推荐
简介 多线程编程在现代软件开发中扮演着至关重要的角色。它使我们能够有效地利用多核处理器和提高应用程序的性能。然而,多线程编程也伴随着一系列挑战,其中最重要的之一就是处理共享资源的线程安全性。在这个领域,锁(Lock)是一个关键的概念,用于协调线程之间对共享资源的访问。本文将深入探讨Java中不同类型的锁以及它们的应用。我们将从基本概念开始,逐步深入,帮助您了解不同类型的锁以及如何选择合适的锁来解决
常量变量是其值固定且程序中只存在一个副本的变量。一旦你声明了一个常量变量并给它赋值,你就不能在整个程序中再次改变它的值。 与其他语言不同,Java不直接支持常量。但是,你仍然可以通过声明一个变量为静态和final来创建一个常量。 静态 - 一旦你声明了一个静态变量,它们将在编译时加载到内存中,即只有一个副本可用。 Final - 一旦你声明了一个final变量,就不能再修改它的值。 因此,你可以通
如何调试 php 函数中未捕获的异常?使用 xdebug.scream:启用 xdebug 扩展的 xdebug.scream 配置选项,未捕获的异常时会显示蓝色屏幕和详细错误信息。使用 register_shutdown_function:注册一个回调函数在脚本执行结束时执行,并使用 error_get_last() 函数捕获未捕获的异常并显示其信息。 如何调试 PHP 函数中未捕获的异常? 简
php 函数中常见的错误陷阱有:缺乏参数类型检查,导致类型错误。默认参数值不可变,修改后可能导致意外结果。误用返回值,未正确处理潜在错误或异常。命名空间冲突,导致函数调用错误。递归调用栈溢出,缺乏明确的退出条件。 PHP 函数常见错误的陷阱和预防措施 PHP 函数是编程中的基本构建块,但如果不小心使用,它们可能会导致常见的错误。本文重点介绍了 PHP 函数中经常遇到的常见错误陷阱,并提供了如何避免
Java变量的定义及使用方法详解 在Java中,变量是用来存储数据的容器,它们在程序中被用来存储各种类型的值,如整数、浮点数、字符等。本文将详细介绍Java变量的定义和使用方法,并提供具体的代码示例。 一、变量的定义在Java中,使用关键字"int"、"double"、"char"等来声明变量的类型。变量的定义通常需要指定变量的名称和初始值(可选)。以下是几种常见的变量定义方式: 声明整型变量:i
回到顶部
|