关于STL使用heap时的比较函数问题

saramand9 2008-04-14 03:20:49
#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;
}
...全文
175 7 打赏 收藏 转发到动态 举报
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
saramand9 2008-04-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ttkk_2007 的回复:]
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();
}
原来pop_heap里也还的写比较函数的啊。.见笑了。.谢啦..哥们

return 0;
}
[/Quote]
ttkk_2007 2008-04-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 saramand9 的回复:]
引用 1 楼 saramand9 的回复:
使用less函数能够得到有序的值 (从大到小)
但是使用greater函数却得不到有序的值,不知道是为什么???

额---说反了。..是less的时候得不到有序的,greater的得到 有序
[/Quote]
你又说反了- -!
不想低调 2008-04-14
  • 打赏
  • 举报
回复
lz的程序 没问题啊!
ttkk_2007 2008-04-14
  • 打赏
  • 举报
回复

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;
}
saramand9 2008-04-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 saramand9 的回复:]
使用less函数能够得到有序的值 (从大到小)
但是使用greater函数却得不到有序的值,不知道是为什么???
[/Quote]
额---说反了。..是less的时候得不到有序的,greater的得到 有序
kevinchj 2008-04-14
  • 打赏
  • 举报
回复
关注……
saramand9 2008-04-14
  • 打赏
  • 举报
回复
使用less函数能够得到有序的值 (从大到小)
但是使用greater函数却得不到有序的值,不知道是为什么???
相关推荐

63,579

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下