使用示例中的C++中的std::is_heap()
C++标准模板库中的 std::is_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