关于STL使用heap时的比较函数有关问题
关于STL使用heap时的比较函数问题
[code=C/C++][/code]#include<iostream>
#include<algorithm>
#include<vector>
#include<functional>
using namespace std;
int main()
{
int x[]={25,16,23,17,39,81,20,22,43,12};
int sz=sizeof(x)/sizeof(int);
vector<int> v(x,x+sz);
make_heap(v.begin(),v.end(),less<int>() );
int i ;
while(!v.empty())
{
cout<<v[0]<<endl;
pop_heap(v.begin(),v.end() );
v.pop_back();
}
return 0;
}
------解决方案--------------------
[code=C/C++][/code]#include<iostream>
#include<algorithm>
#include<vector>
#include<functional>
using namespace std;
int main()
{
int x[]={25,16,23,17,39,81,20,22,43,12};
int sz=sizeof(x)/sizeof(int);
vector<int> v(x,x+sz);
make_heap(v.begin(),v.end(),less<int>() );
int i ;
while(!v.empty())
{
cout<<v[0]<<endl;
pop_heap(v.begin(),v.end() );
v.pop_back();
}
return 0;
}
------解决方案--------------------
- C/C++ code
int main()
{
int x[]={25,16,23,17,39,81,20,22,43,12};
int sz=sizeof(x)/sizeof(int);
vector <int> v(x,x+sz);
make_heap(v.begin(),v.end(),greater <int>() );
int i ;
while(!v.empty())
{
cout < <v[0] < <endl;
pop_heap(v.begin(),v.end(),greater <int>() );
v.pop_back();
}
return 0;
}