c++调用c库函数-结构体排序,自定义比较函数bool cmp()

问题描述

结构体排序,自定义比较函数bool cmp()

C++结构体 用sort排序 自己定义比较函数cmp bool cmp()

struct lzl
{
string s;
int a,b;
}x[100];
bool cmp(lzl n,lzl m)
{
if(n.a!=m.a)
return n.a>m.a;
if(n.a==m.a&&n.b!=m.b)
return n.b>m.b;
if(n.a==m.a&&n.b==m.b)
return n.s<m.s;
}
如果a不同,用a来排序,如果a相同,b不同,就用b来排序,a,b都相同就用s来排序。
我想问的是,这个语句在cmp里面怎么写啊!两个的我会写,但是3个怎么写啊?

解决方案

if(n.a != m.a)
{
return n.a>m.a;
}else if(n.b != m.b)
{
return n.b > m.b
}else
{
return strcmp(n.s,m.s);
}

解决方案二:

请问题主您的cmp什么意思?
另外,您说的用a、b或者s来排序,准确意思是不是您定义了两个排序函数和一个函数指针数组?

解决方案三:

如果是三个的那就弄个临时变量来记录

解决方案四:

cmp是比较函数 它永远只比较两个 但是你可以用list来进行sort

解决方案五:

if(n.a != m.a)
{
return n.a>m.a;
}else if(n.b != m.b)
{
return n.b > m.b
}else
{
return strcmp(n.s,m.s);
}
cmp是比较函数 它永远只比较两个 但是你可以用list来进行sort

解决方案六:

if(n.a != m.a)
{
return n.a>m.a;
}else if(n.b != m.b)
{
return n.b > m.b
}else
{
return strcmp(n.s,m.s);
}
cmp是比较函数 它永远只比较两个 但是你可以用list来进行sort

时间: 2024-09-26 10:31:51

c++调用c库函数-结构体排序,自定义比较函数bool cmp()的相关文章

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

问题描述 C++库函数对结构体排序,排序顺序紊乱的问题 C++库函数怎么样对结构体的数组数组排序,同时要避免结果出现紊乱的弊端!代码的思路和方式 解决方案 这里以vector为例,主要有两种方式: 1.重载要排序的结构体或类的<号或者>号,演示代码如下: #include<vector> #include<algorIThm> using namespace std; typedef struct ValuePerWeight //定义结构体 { double vw;

C++怎么对数组的结构体排序结果不稳定?

问题描述 C++怎么对数组的结构体排序结果不稳定? C++库函数利用函数指针对数组结构体排序的方法是什么?怎么样克服排序结果不稳定的弊端? 解决方案 参考:http://blog.csdn.net/lethic/article/details/7781203 解决方案二: 结构体数组排序

c++-Visula Basic 6.0语言调用C++ struct结构体中的字符串问题

问题描述 Visula Basic 6.0语言调用C++ struct结构体中的字符串问题 VB6调用C++ DLL结构体struct中的字符串,内存预分配的写法是什么,内存回收怎么做?VB不能用指针的谢谢 解决方案 VB不支持指针,一般你可以定义成局部变量,这样函数退出会自动回收的. 解决方案二: c++公用体union.结构体struct内存分配问题

c语言-一道C语言用结构体排序的题目 大神快来帮我理解下人家的代码~~~

问题描述 一道C语言用结构体排序的题目 大神快来帮我理解下人家的代码~~~ 描述 小王是公司的仓库管理员,一天,他接到了这样一个任务:从仓库中找出一根钢管.这听起来不算什么,但是这根钢管的要求可真是让他犯难了,要求如下: 1. 这根钢管一定要是仓库中最长的: 2. 这根钢管一定要是最长的钢管中最细的: 3. 这根钢管一定要是符合前两条的钢管中编码最大的(每根钢管都有一个互不相同的编码,越大表示生产日期越近). 相关的资料到是有,可是,手工从几百份钢管材料中选出符合要求的那根-- 要不,还是请你编

c#-C# 调用c++函数 结构体 指针

问题描述 C# 调用c++函数 结构体 指针 求大神解答下, c++结构体: typedef struct { Byte byIndex; Byte byRW; }PACKET; typedef struct { PACKET *pPackets; INT32 iNumPackets; }BLOCK c++ 函数申明: BOOL Transfer(BLOCK block); C#如何调用这个Transfer函数: 1:定义C#结构体 public struct PACKET { byte byI

C#调用C++dll, 结构体中有字符串指针怎么转换 unsigned char *pImage[8]

问题描述 C++中的结构体如下:typedefstruct_tagLPROut{unsignedchar*pImage[8];BOOLbHaveResult[8];}LPROut,*PLPROut;怎么转换为C#的结构体,主要是unsignedchar*pImage[8];这个怎么转换 解决方案 解决方案二:我记得char*在C#中对应是string,有没有试试string[8]?解决方案三:[MarshalAs(UnmangeType::ByValArray,sizeConst=8)]IntP

c++-怎么在一个结构体里调用本身结构体数组

问题描述 怎么在一个结构体里调用本身结构体数组 typedef struct XML_DATA{ struct XML_DATA DATA[10]; char MENU[10][256]; ezxml_t xml; char *txt; char *strAttr; char *file; };XML_DATA m_data[10]; 这样使用为什么会报错,应该怎么修改?谢谢大家帮忙看看咯. 解决方案 定义变量要使用:struct XML_DATA m_data[10];要不就要改结构体的定义,

unity3d-C#中如何将网络接收到的byte[]类型的数据转化为自定义的结构体类型

问题描述 C#中如何将网络接收到的byte[]类型的数据转化为自定义的结构体类型 自定义结构体类型为: public struct Data { float x; float y; float z; float heading; float pitch; float roll; } C#用byte[] buf 接受C++服务器发来的数据,之后我如何才能将buf中的数据放到Data data中呢? 解决方案 使用实体类 byteToString 转化成 json 对象

C++ 语言关于结构体的排序的功能

问题描述 C++ 语言关于结构体的排序的功能 结构体由多个字段构成,要求按照先后次序对字段排序,用C++语言实现,怎么才能简单高效可靠 解决方案 参考:http://blog.csdn.net/lethic/article/details/7781203 解决方案二: GO语言为结构体排序c++ 结构体排序结构体优先队列排序 解决方案三: 根据结构体中的某个字段排序?