push_heap()

push_heap()はヒープから要素を取り出します。

書式は次の通りです。


    #include <algorithm>
    template void push_heap(riter first, riter last);
    template void push_heap(riter first, riter last, pred pr);
  

引数firstは最初の要素の反復子、lastは最後の要素の反復子です。

次の例はヒープを作成して操作するプログラムの例です。


    #include <algorithm>
    #include <vector>
    #include <iostream>
    
    using namespace std;
    
    int main(void)
    {
       vector<int> v1;
       for (int i=0; i<5; i++)
          v1.push_back(i+1);
    
       push_heap(v1.begin(),v1.end());
    
       // コンテナの内容を出力する
       ostream_iterator<int,char> out(cout," ");
       copy(v1.begin(), v1.end(), out);
       cout << endl;
    
       push_heap(v1.begin(),v1.end());
       // コンテナの内容を出力する
       cout << "push_heap後" << endl;
       copy(v1.begin(),v1.end(),out);
       cout << endl;
    
       push_heap(v1.begin(),v1.end());
       // コンテナの内容を出力する
       cout << "push_heap後" << endl;
       copy(v1.begin(),v1.end(),out);
       cout << endl;
    
       sort_heap(v1.begin(),v1.end());
       // コンテナの内容を出力する
       cout << "sort_heap後" << endl;
       copy(v1.begin(),v1.end(),out);
       cout << endl;
    
       return 0;
     }
  

実行結果は次の通りです。


    5 4 3 1 2
    push_heap後
    4 2 3 1 5
    push_heap後
    5 4 3 1 2
    sort_heap後
    1 2 3 4 5
  

関連項目

make_heap()

pop_heap()

vector


アルゴリズム目次 C++目次 inserted by FC2 system