使用更大值和向量声明优先级队列
Declaration of Priority Queue using greater and vector
有人能解释一下这个声明的含义吗:
typedef pair<long long, int> PII;
priority_queue<PII, vector<PII>, greater<PII> > Q;
它是作为一对long long
和int
的优先级队列还是其他什么?请有人也解释一下这里的greater<PII>
是什么?
这声明了一个包含std::pair<long long, int>
实例的std::priority_queue
,其中std::vector<std::pair<long long, int>>
是优先级队列的底层容器(因为它是容器适配器)。
std::greater<std::pair<long long, int>>
用作队列的Comparator函数对象,检查LHS对是否大于RHS对。参考如下:
http://en.cppreference.com/w/cpp/utility/functional/greater
这里使用greater
意味着更低的值被认为具有更高的优先级,并且更早地从优先级队列中出来。默认情况下,使用less
,值越高,优先级越高。
对按字典顺序排列;(1,3)在(2,1)之前,在(1,2)之后。
这是在c++中创建最小堆的方法。
typedef pair<long long, int> PII;
priority_queue<PII, vector<PII>, greater<PII> > Q;
相关文章:
- 声明高维向量的更简洁的方法
- 标准::向量声明中使用的模板参数
- 使用全局声明的向量时,C++双重释放错误/损坏
- 为什么这种向量声明无效?
- 无法在声明时使用初始值设定项列表初始化常量字符*/字符串数组的向量
- 如何声明一个标准::提升直方图的向量?提升直方图的类型是什么?
- 在类中声明向量的大小
- C++ 通过函数声明后初始化向量
- 向量索引变量声明(size_t 或 std::vector<DATATYPE>::size_type)
- 如何声明指向类对象的指针向量?
- 我不明白这个向量声明语句
- <string> C++ 中的向量声明
- 使用更大值和向量声明优先级队列
- 将向量声明为类成员
- 全局和主类中的向量声明
- C++如何将对象的向量声明为类的成员
- 如何将unique_ptr的向量声明为类数据成员?
- 对齐数据类型Eigen::矩阵的数组或向量声明
- 看不懂这个向量声明
- 将对象向量声明为另一个类的成员