📜  C++ 中的 std::is_heap() 示例

📅  最后修改于: 2021-09-06 06:31:09             🧑  作者: Mango

C++ 标准模板库中的std::is_heap()函数用于检查给定范围的元素是否形成 Max Heap。当给定的元素范围形成最大堆时,它返回 True,否则返回 False。

头文件:

#include 

句法:

is_heap(first, last)

参数:它需要两个参数,迭代器指向范围的第一个最后一个元素。

返回值:该函数返回以下值:

  • True:如果范围[first, last) 中的元素形成最大堆。
  • False:如果范围[first, last)中的元素没有形成最大堆。

下面是说明std::is_heap() 的程序

方案一:

// C++ program to illustrate
// the std::is_heap()
  
#include 
#include 
#include 
using namespace std;
  
// Driver Code
int main()
{
  
    // Given list of numbers
    vector arr = { 3, 1, 5, 1, 9, 8 };
  
    // Check if arr[] forms max-heap or not
    bool isHeap = is_heap(arr.begin(),
                          arr.end());
  
    if (isHeap) {
        cout << "Forms a Max Heap";
    }
    else {
        cout << "Doesn't forms a Max Heap";
    }
}
输出:
Doesn't forms a Max Heap

方案二:

// C++ program to illustrate the std::is_heap()
  
#include 
#include 
#include 
using namespace std;
  
// Driver Code
int main()
{
  
    // Given list of numbers
    vector arr = { 3, 1, 5, 1, 9, 8 };
  
    // Check if arr[] forms max-heap or not
    bool isHeap = is_heap(arr.begin(),
                          arr.end());
  
    // isHeap is false then make Max Heap
    // using in built function make_heap
    if (!isHeap) {
        make_heap(arr.begin(), arr.end());
    }
  
    // Else already a heap
    else {
        cout << "Already Max Heap\n";
    }
  
    // Print all the elements of arr
    // after make Max Heap
    for (auto& it : arr) {
        cout << it << ' ';
    }
    return 0;
}
输出:
9 3 8 1 1 5

参考: http : //www.cplusplus.com/reference/algorithm/is_heap/

想要从精选的视频和练习题中学习,请查看C++ 基础课程,从基础到高级 C++ 和C++ STL 课程,了解语言和 STL。要完成从学习语言到 DS Algo 等的准备工作,请参阅完整的面试准备课程