list排序的问题.

VCSQLVB 2010-06-01 04:29:44
struct data
{
char buf[32];
int a;
};
list<data> l;
如何根据data.a来降序排列?
...全文
77 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengzhixi 2010-06-01
  • 打赏
  • 举报
回复
哦 多谢指点,查了下,有两个版本,其中一个是可以传函数对象的版本。
fanster28_ 2010-06-01
  • 打赏
  • 举报
回复
list内部的sort有这样的实现
两种方法都可以


template<class _Pr3>
void sort(_Pr3 _Pred)


[Quote=引用 5 楼 pengzhixi 的回复:]

引用 4 楼 fanster28_ 的回复:
使用函数对象,或者重载operator<


C/C++ code

bool operator<(const data&amp; lhs,const data&amp; rhs)
{
return lhs.a<rhs.a;
}

用函数对象不合适,因为只能用List内部的sort排序
[/Quote]
pengzhixi 2010-06-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fanster28_ 的回复:]
使用函数对象,或者重载operator<


C/C++ code

bool operator<(const data& lhs,const data& rhs)
{
return lhs.a<rhs.a;
}
[/Quote]
用函数对象不合适,因为只能用List内部的sort排序
fanster28_ 2010-06-01
  • 打赏
  • 举报
回复
使用函数对象,或者重载operator<


bool operator<(const data& lhs,const data& rhs)
{
return lhs.a<rhs.a;
}
pengzhixi 2010-06-01
  • 打赏
  • 举报
回复
你为data重载一个operator<不就可以了
VCSQLVB 2010-06-01
  • 打赏
  • 举报
回复
怎样完善,不熟悉STL.
pengzhixi 2010-06-01
  • 打赏
  • 举报
回复
你的data类型都没有默认的operator<

64,637

社区成员

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

试试用AI创作助手写篇文章吧