首先,我们来看看类中模板参数的含义minHeap
。
template< class T, class Container = std::vector<T>, class Compare = std::less<typename Container::value_type> class priority_queue;
模板参数
T - 存储元素的类型。...
Container - 用于存储元素的底层容器的类型。...
比较- 提供严格弱排序的比较类型。
因此,对于minHeap
,它包含vector<int>
对象。它使用 avector<vector<int>>
作为底层存储来包含这些vector<int>
对象。它用于greater<>
比较两个vector<int>
对象以确定它们的顺序。
有什么greater<>
意义?该Compare
参数用于决定哪个元素在顶部。默认情况下,priority_queue
使用less<>
,这意味着较大的元素位于顶部。相反,它会翻转比较的greater<>
方向,因此较小的元素会出现在顶部。这就是使它成为“最小”堆的原因。
现在,查看对push的调用:
void push( const value_type& value ); void push( value_type&& value ); (since C++11)
push
只接受一个参数,并且参数的类型是value_type
,在这种情况下是vector<int>
.
所以这条线
minHeap.push({matrix[r][0], r, 0});
实际上是添加一个vector<int>
到minHeap
. vector<int>
其中包含的值为matrix[r][0]
、r
和0
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句