当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。