|
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![](/Images/OutliningIndicators/None.gif) 7![](/Images/OutliningIndicators/ExpandedBlockStart.gif) int main () { 8![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) int myints[] = {10,20,30,5,15}; 9 vector<int> v(myints,myints+5); 10![](/Images/OutliningIndicators/InBlock.gif) 11 make_heap (v.begin(),v.end()); 12 cout << "initial max heap : " << v.front() << endl; 13![](/Images/OutliningIndicators/InBlock.gif) 14 pop_heap (v.begin(),v.end()); v.pop_back(); 15 cout << "max heap after pop : " << v.front() << endl; 16![](/Images/OutliningIndicators/InBlock.gif) 17 v.push_back(99); push_heap (v.begin(),v.end()); 18 cout << "max heap after push: " << v.front() << endl; 19![](/Images/OutliningIndicators/InBlock.gif) 20 sort_heap (v.begin(),v.end()); 21![](/Images/OutliningIndicators/InBlock.gif) 22 cout << "final sorted range :"; 23 for (unsigned i=0; i<v.size(); i++) cout << " " << v[i]; 24![](/Images/OutliningIndicators/InBlock.gif) 25 cout << endl; 26![](/Images/OutliningIndicators/InBlock.gif) 27 return 0; 28 } 29![](/Images/OutliningIndicators/None.gif) 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![](/Images/OutliningIndicators/None.gif) 7![](/Images/OutliningIndicators/ExpandedBlockStart.gif) int main () { 8![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) int myints[] = {10,20,30,5,15}; 9 vector<int> v(myints,myints+5); 10 vector<int>::iterator it; 11![](/Images/OutliningIndicators/InBlock.gif) 12 make_heap (v.begin(),v.end()); 13 cout << "initial max heap : " << v.front() << endl; 14![](/Images/OutliningIndicators/InBlock.gif) 15 pop_heap (v.begin(),v.end()); v.pop_back(); 16 cout << "max heap after pop : " << v.front() << endl; 17![](/Images/OutliningIndicators/InBlock.gif) 18 v.push_back(99); push_heap (v.begin(),v.end()); 19 cout << "max heap after push: " << v.front() << endl; 20![](/Images/OutliningIndicators/InBlock.gif) 21 sort_heap (v.begin(),v.end()); 22![](/Images/OutliningIndicators/InBlock.gif) 23 cout << "final sorted range :"; 24 for (unsigned i=0; i<v.size(); i++) cout << " " << v[i]; 25![](/Images/OutliningIndicators/InBlock.gif) 26 cout << endl; 27![](/Images/OutliningIndicators/InBlock.gif) 28 return 0; 29 } 30![](/Images/OutliningIndicators/None.gif) 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![](/Images/OutliningIndicators/None.gif) 7![](/Images/OutliningIndicators/ExpandedBlockStart.gif) int main () { 8![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) int myints[] = {10,20,30,5,15}; 9 vector<int> v(myints,myints+5); 10 vector<int>::iterator it; 11![](/Images/OutliningIndicators/InBlock.gif) 12 make_heap (v.begin(),v.end()); 13 cout << "initial max heap : " << v.front() << endl; 14![](/Images/OutliningIndicators/InBlock.gif) 15 pop_heap (v.begin(),v.end()); v.pop_back(); 16 cout << "max heap after pop : " << v.front() << endl; 17![](/Images/OutliningIndicators/InBlock.gif) 18 v.push_back(99); push_heap (v.begin(),v.end()); 19 cout << "max heap after push: " << v.front() << endl; 20![](/Images/OutliningIndicators/InBlock.gif) 21 sort_heap (v.begin(),v.end()); 22![](/Images/OutliningIndicators/InBlock.gif) 23 cout << "final sorted range :"; 24 for (unsigned i=0; i<v.size(); i++) cout << " " << v[i]; 25![](/Images/OutliningIndicators/InBlock.gif) 26 cout << endl; 27![](/Images/OutliningIndicators/InBlock.gif) 28 return 0; 29 } 30![](/Images/OutliningIndicators/None.gif) 注:例子来源于www.cplusplus.com网站
|