Advertisement

C++面试题整理与归纳

阅读量:

C++中堆(优先队列)的使用

  1. priority_queue 默认采用最大堆结构,例如:
复制代码
    std::priority_queue<int> q;
    
    
      
    

上述语句用于定义一个最大堆。

  1. 最大堆与最小堆的创建方式:
    priority_queue<>在默认情况下构成的是最大堆,这源于优先队列队首指向末尾,队尾指向起始位置 的特性。
    换句话说,当使用一个数组时,若采用std::less进行排序(即通过小于号连接元素),优先队列的顶部元素始终位于数组的末尾位置。
复制代码
    // 最小堆
    std::priority_queue<int, std::vector<int>, std::greater<int> > q2; 
    
    // 最大堆
    std::priority_queue<int, std::vector<int>, std::less<int> > q2;
    
    
      
      
      
      
      
    
  1. 设计特定的比较函数,以构建多样化的最大堆与最小堆结构
复制代码
    // Using lambda to compare elements.
    auto cmp 

全部评论 (0)

还没有任何评论哟~