當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C++ sort_heap用法及代碼示例


sort_heap()是一種STL算法,可在開始和結束指定的範圍內對堆進行排序。將堆範圍[開始,結束]中的元素按升序排序。

第二種形式允許您指定一個比較函數,該函數確定何時一個元素小於另一個元素。
在標頭中定義

它有兩個版本,定義如下:
1.使用“
用法:


template 
void sort_heap(RandIter start, RandIter end);
start, end:    the range of elements to sort
返回值:  Since, return type is void, so it doesnot return any value. 

實作

template
void sort_heap( RandIter start, RandIter end );
{
    while (start != end)
        std::pop_heap(start, end--);
}

2.通過使用預定義函數進行比較:
用法:

template 
void sort_heap(RandIter start, RandIter end, Comp cmpfn);
start, end:    the range of elements to sort
comp:   comparison function object (i.e. an object that satisfies the requirements of Compare) 
which returns ?true if the first argument is less than the second.
返回值:Since, its return type is void, so it doesnot return any value. 

實作

template
void sort_heap( RandIter start, RandIter end, Comp cmpfn );
{
    while (start != end)
        std::pop_heap(start, end--, cmpfn);
}
// CPP program to illustrate 
// std::sort_heap 
#include <iostream> 
#include <algorithm> 
#include <vector> 
using namespace std; 
int main() 
{ 
    vector<int> v = {8, 6, 2, 1, 5, 10};  
   
    make_heap(v.begin(), v.end()); 
   
    cout << "heap:   "; 
    for (const auto &i:v) { 
     cout << i << ' '; 
    }    
   
    sort_heap(v.begin(), v.end()); 
   
    std::cout <<endl<< "now sorted:   "; 
    for (const auto &i:v) {                                                    
        cout << i << ' '; 
    }    
    std::cout <<endl; 
}

輸出:

heap:10 6 8 1 5 2 
now sorted:1 2 5 6 8 10 

另一個例子:

// CPP program to illustrate 
// std::sort_heap 
#include <vector> 
#include <algorithm> 
#include <functional> 
#include <iostream> 
  
int main( ) { 
   using namespace std; 
   vector <int> vt1, vt2; 
   vector <int>::iterator Itera1, Itera2; 
  
   int i; 
   for ( i = 1 ; i <=5 ; i++ ) 
      vt1.push_back( i ); 
  
   random_shuffle( vt1.begin( ), vt1.end( ) ); 
  
   cout << "vector vt1 is ( " ; 
   for ( Itera1 = vt1.begin( ) ; Itera1 != vt1.end( ) ; Itera1++ ) 
      cout << *Itera1 << " "; 
   cout << ")" << endl; 
  
   sort_heap (vt1.begin( ), vt1.end( ) ); 
   cout << "heap vt1 sorted range:( " ; 
   for ( Itera1 = vt1.begin( ) ; Itera1 != vt1.end( ) ; Itera1++ ) 
      cout << *Itera1 << " "; 
   cout << ")" << endl; 
} 
    

輸出:

vector vt1 is ( 5 4 2 3 1 )
heap vt1 sorted range:( 1 2 3 4 5 )


相關用法


注:本文由純淨天空篩選整理自 sort_heap function in C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。