1: //is_heap_until2a.cpp 3: #include <iostream> 4: #include <iomanip> 5: #include <vector> 6: #include <algorithm> 7: #include <functional> 8: using namespace std; 10: int main() 11: { 12: cout << "\nThis program illustrates the use of the STL " 13: "is_heap_until() algorithm from\n<algorithm> and the " 14: "greater<int>() functor from <functional> to find " 15: "the first\ninteger that destroys the minimum heap " 16: "order of a vector of integers."; 17: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 19: int a[] = {3, 8, 5, 9, 12, 14, 6, 17, 15}; 20: int b[] = {3, 8, 5, 9, 6, 14, 12, 17, 15}; 21: vector<int> va(a, a+9); 22: vector<int> vb(b, b+9); 23: cout << boolalpha; 24: auto firstNonHeapElementIter = 25: is_heap_until(va.begin(), va.end(), greater<int>()); 26: if (firstNonHeapElementIter == va.end()) 27: cout << "For 3, 8, 5, 9, 12, 14, 6, 17, 15, the sequence is " 28: "a minimum heap." << endl; 29: else 30: cout << "For 3, 8, 5, 9, 12, 14, 6, 17, 15, the minimum heap order " 31: "was destroyed\nat element " << *firstNonHeapElementIter << ".\n"; 33: firstNonHeapElementIter = 34: is_heap_until(vb.begin(), vb.end(), greater<int>()); 35: if (firstNonHeapElementIter == vb.end()) 36: cout << "For 3, 8, 5, 9, 6, 14, 12, 17, 15, the sequence is " 37: "a minimum heap." << endl; 38: else 39: cout << "For 3, 8, 5, 9, 6, 14, 12, 17, 15, the minimum heap order " 40: "was destroyed\nat element " << *firstNonHeapElementIter << ".\n"; 41: cout << "Press Enter to continue ... "; cin.ignore(80, '\n'); 42: }