C++库函数对结构体排序,排序顺序紊乱的问题

C++库函数怎么样对结构体的数组数组排序,同时要避免结果出现紊乱的弊端!代码的思路和方式... C++库函数怎么样对结构体的数组数组排序,同时要避免结果出现紊乱的弊端!代码的思路和方式 展开
 我来答
仍鹤犹绿竹
2019-07-31 · TA获得超过3879个赞
知道大有可为答主
回答量:3144
采纳率:24%
帮助的人:454万
展开全部
这里以vector为例,主要有两种方式:
1.重载要排序的结构体或类的<号或者>号,演示代码如下:
#include<vector>
#include<algorIThm>
using
namespace
std;
typedef
struct
ValuePerWeight
//定义结构体
{
double
vw;
int
i;
bool
operator
<(const
ValuePerWeight
&other)const
//升序排序
{
return
vw>other.vw;
}
//或者
bool
operator
>(const
ValuePerWeight
&r)const
//降序排序
{
return
vw>other.vw;
}
}ValuePerWeight;
int
main(){
ValuePerWeight
a1..an;
vector<ValuePerWeight>
vpw
;
for(int
i=1;i<=n;i++){
....
vpw.push_back(ai);//对a1到an处理后加到vpw
}
sort(vpw.begin(),
vpw.end(),greater<ValuePerWeight>());//降序
sort(vpw.begin(),
vpw.end(),less<ValuePerWeight>());//升序
//默认情况为升序
sort(vpw.begin(),
vpw.end())
....
return
0;
}
2.不修改结构体或类的定义部分,用函数对象来实现,演示代码如下:
#include<vector>
#include<algorIThm>
#include
<functional>
using
namespace
std;
typedef
struct
ValuePerWeight//自定义结构体
{
double
vw;
int
i;
}ValuePerWeight;
//全局函数
bool
a_less_b(const
ValuePerWeight&
r,const
ValuePerWeight&
s)
{
return
r.vw
<
s.vw;
}
bool
a_greater_b(const
ValuePerWeight&
r,const
ValuePerWeight&
s)
{
return
r.vw
>
s.vw;
}
int
main(){
ValuePerWeight
a1..an;
vector<ValuePerWeight>
vpw
;
for(int
i=1;i<=n;i++){
....
vpw.push_back(ai);//对a1到an处理后加到vpw
}
sort(vpw.begin(),
vpw.end(),a_less_b);
//升序排序
sort(vpw.begin(),
vpw.end(),a_greater_b);
//降序排序
....
return
0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式