|
1、 make_heap:使序列变成堆 原型: template <class RandomAccessIterator> void make_heap ( RandomAccessIterator first, RandomAccessIterator last ); template <class RandomAccessIterator, class Compare> void make_heap ( RandomAccessIterator first, RandomAccessIterator last, Compare comp ); 范例:
1 // range heap example 2 #include <iostream> 3 #include <algorithm> 4 #include <vector> 5 using namespace std; 6 7 int main () { 8 int myints[] = {10,20,30,5,15}; 9 vector<int> v(myints,myints+5); 10 11 make_heap (v.begin(),v.end()); 12 cout << "initial max heap : " << v.front() << endl; 13 14 pop_heap (v.begin(),v.end()); v.pop_back(); 15 cout << "max heap after pop : " << v.front() << endl; 16 17 v.push_back(99); push_heap (v.begin(),v.end()); 18 cout << "max heap after push: " << v.front() << endl; 19 20 sort_heap (v.begin(),v.end()); 21 22 cout << "final sorted range :"; 23 for (unsigned i=0; i<v.size(); i++) cout << " " << v[i]; 24 25 cout << endl; 26 27 return 0; 28 } 29 2、 push_heap:压栈(入栈) 原型: template <class RandomAccessIterator> void push_heap ( RandomAccessIterator first, RandomAccessIterator last );
template <class RandomAccessIterator, class Compare> void push_heap ( RandomAccessIterator first, RandomAccessIterator last, Compare comp ); 3、pop_heap:弹栈(出栈) 原型: template <class RandomAccessIterator> void pop_heap ( RandomAccessIterator first, RandomAccessIterator last );
template <class RandomAccessIterator, class Compare> void pop_heap ( RandomAccessIterator first, RandomAccessIterator last, Compare comp ); 范例:
1 // range heap example 2 #include <iostream> 3 #include <algorithm> 4 #include <vector> 5 using namespace std; 6 7 int main () { 8 int myints[] = {10,20,30,5,15}; 9 vector<int> v(myints,myints+5); 10 vector<int>::iterator it; 11 12 make_heap (v.begin(),v.end()); 13 cout << "initial max heap : " << v.front() << endl; 14 15 pop_heap (v.begin(),v.end()); v.pop_back(); 16 cout << "max heap after pop : " << v.front() << endl; 17 18 v.push_back(99); push_heap (v.begin(),v.end()); 19 cout << "max heap after push: " << v.front() << endl; 20 21 sort_heap (v.begin(),v.end()); 22 23 cout << "final sorted range :"; 24 for (unsigned i=0; i<v.size(); i++) cout << " " << v[i]; 25 26 cout << endl; 27 28 return 0; 29 } 30 4、sort_heap:对堆排序 原型:template <class RandomAccessIterator> void sort_heap ( RandomAccessIterator first, RandomAccessIterator last );
template <class RandomAccessIterator, class Compare> void sort_heap ( RandomAccessIterator first, RandomAccessIterator last, Compare comp ); 范例:
1 // range heap example 2 #include <iostream> 3 #include <algorithm> 4 #include <vector> 5 using namespace std; 6 7 int main () { 8 int myints[] = {10,20,30,5,15}; 9 vector<int> v(myints,myints+5); 10 vector<int>::iterator it; 11 12 make_heap (v.begin(),v.end()); 13 cout << "initial max heap : " << v.front() << endl; 14 15 pop_heap (v.begin(),v.end()); v.pop_back(); 16 cout << "max heap after pop : " << v.front() << endl; 17 18 v.push_back(99); push_heap (v.begin(),v.end()); 19 cout << "max heap after push: " << v.front() << endl; 20 21 sort_heap (v.begin(),v.end()); 22 23 cout << "final sorted range :"; 24 for (unsigned i=0; i<v.size(); i++) cout << " " << v[i]; 25 26 cout << endl; 27 28 return 0; 29 } 30 注:例子来源于www.cplusplus.com网站
|