当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ std::is_heap()用法及代码示例


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

头文件:

#include <algorithm>

用法:

is_heap(first, last)

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

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



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

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

程序1:

// C++ program to illustrate 
// the std::is_heap() 
  
#include <algorithm> 
#include <iostream> 
#include <vector> 
using namespace std; 
  
// Driver Code 
int main() 
{ 
  
    // Given list of numbers 
    vector<int> 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

程序2:

// C++ program to illustrate the std::is_heap() 
  
#include <algorithm> 
#include <iostream> 
#include <vector> 
using namespace std; 
  
// Driver Code 
int main() 
{ 
  
    // Given list of numbers 
    vector<int> 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/




相关用法


注:本文由纯净天空筛选整理自kivi大神的英文原创作品 std::is_heap() in C++ with Examples。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。