读书人

关于qsort对CArry的排序的有关问题

发布时间: 2012-12-17 09:31:40 作者: rapoo

关于qsort对CArry的排序的问题
小弟现有一个由结构体组成的动态数组,现要对其进行排序,如何进行?

typedef struct FileName
{
CString filenames;
int nfilename;
}FileName;
typedef CArray<FileName,FileName&> m_arrfilenames;
m_arrfilenames m_filename;



void qsort( void *base, size_t num, size_t width, int (__cdecl *compare )(const void *elem1, const void *elem2 ) );

就是这里的返回值应该怎么写?
int Comparison(const void *a, const void *b)
{
return ;
}

求赐教

[最优解释]
关键看你怎么排序了。比如比较字符串

int Comparison(const void *a, const void *b)
{
FileName *f1 = (FileName*)a;
FileName *f2 = (FileName*)b;

if(f1.filenames > f2.filenames)
return 1;
else
return 0;
}

[其他解释]
要看你怎么排序了?
[其他解释]
Compare function return value
Description

< 0
elem1 less than elem2

0
elem1 equivalent to elem2

> 0
elem1 greater than elem2


[其他解释]
排序的话总得有个排序的标准,比如说,按字母顺序,按结构体大小
[其他解释]
std::sort()也是quick sort, lz可以考虑用std::vector代替CArray,然后重载operator <
[其他解释]
问题补充:动态数组在一个nfile的类里面
[其他解释]
是按照里面的int型的数据进行从小到大的排序,而且2L的FileName不认啊

[其他解释]
就这样吧。

读书人网 >VC/MFC

热点推荐