首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

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

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

关于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 
 

 elem1 equivalent to elem2 
 
> 0 
 elem1 greater than elem2 
 

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

[其他解释]
就这样吧。

热点排行