MFC的CArray排序小结(结合std::sort)

MFC的CArray非常好用(相对于C/C++的静态数组),但无法根据某个成员排序。下面是结合std::sort一块实现的CArray排序,废话少说,直接上程序干货:

#include "stdafx.h"
#include "Test.h"
#include 


#ifdef _DEBUG
#define new DEBUG_NEW
#endif

//
//	自定义的数据结构
//
typedef struct
{
	int		x;
	char	str[100];
	double	f;
}MY_T;

// 唯一的应用程序对象

CWinApp theApp;

using namespace std;

CArray  myArray;

unsigned RandUInt32(unsigned int min, unsigned int max) 
{ 
	unsigned u; 
	rand_s(&u); 
	return (unsigned)((double)u / ((__int64)UINT_MAX + 1) * (max - min) + min); 
} 

//
//	下面是比较函数,三种类型
//
bool Comp_f (MY_T &p1, MY_T &p2)
{
	return p1.f > p2.f;
}

//字符串比较
bool Comp_str(MY_T &p1, MY_T &p2)
{
	if(strcmp(p1.str, p2.str) >0)
		return true;
	else return false;
}

//整数比较
bool Comp_i (MY_T &p1, MY_T &p2)
{
	return p1.x > p2.x;
}


void Print()
{
	printf("整数\t字串\t浮点数\r\n");

	for (int i=0; i


上述程序用到了rand_s,需要将宏定义放在stdafx.h的最上面:#define _CRT_RAND_S。

还有一点需要注意:比较函数返回的是bool类型,不是整数类型(0或1),因此在比较字符串(即使用strcmp)时,要返回true或false类型!!


你可能感兴趣的:(VC++)