STL中的make_heap、push_heap、pop_heap示例程序

来源:互联网 发布:软件陷阱 编辑:程序博客网 时间:2024/05/18 14:23
// alg_pop_heap.cpp// compile with: /EHsc#include <vector>#include <algorithm>#include <functional>#include <iostream>int main( )  {   using namespace std;   vector <int> v1;   vector <int>::iterator Iter1, Iter2;   int i;   for ( i = 1 ; i <= 9 ; i++ )      v1.push_back( i );   // Make v1 a heap with default less than ordering   random_shuffle( v1.begin( ), v1.end( ) );   make_heap ( v1.begin( ), v1.end( ) );   cout << "The heaped version of vector v1 is ( " ;   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )      cout << *Iter1 << " ";   cout << ")." << endl;   // Add an element to the back of the heap   v1.push_back( 10 );   push_heap( v1.begin( ), v1.end( ) );   cout << "The reheaped v1 with 10 added is ( " ;   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )      cout << *Iter1 << " ";   cout << ")." << endl;   // Remove the largest element from the heap   pop_heap( v1.begin( ), v1.end( ) );   cout << "The heap v1 with 10 removed is ( " ;   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )      cout << *Iter1 << " ";   cout << ")." << endl << endl;   // Make v1 a heap with greater-than ordering with a 0 element   make_heap ( v1.begin( ), v1.end( ), greater<int>( ) );   v1.push_back( 0 );   push_heap( v1.begin( ), v1.end( ), greater<int>( ) );   cout << "The 'greater than' reheaped v1 puts the smallest "        << "element first:\n ( " ;   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )      cout << *Iter1 << " ";   cout << ")." << endl;   // Application of pop_heap to remove the smallest element   pop_heap( v1.begin( ), v1.end( ), greater<int>( ) );   cout << "The 'greater than' heaped v1 with the smallest element\n "        << "removed from the heap is: ( " ;   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )      cout << *Iter1 << " ";   cout << ")." << endl;}


The heaped version of vector v1 is ( 9 5 8 4 1 6 7 2 3 ).The reheaped v1 with 10 added is ( 10 9 8 4 5 6 7 2 3 1 ).The heap v1 with 10 removed is ( 9 5 8 4 1 6 7 2 3 10 ).The 'greater than' reheaped v1 puts the smallest element first: ( 0 1 6 3 2 8 7 4 9 10 5 ).The 'greater than' heaped v1 with the smallest element removed from the heap is: ( 1 2 6 3 5 8 7 4 9 10 0 ).


原创粉丝点击