h*******3 发帖数: 3775 | 1 有一组数据,其中的fied有surname, department,payRate,等等
要求是按照surname 从A 到Z 排列这组数据。排列的方法是straight insertion
我现在的方法已经可以sort surname, department,但是如何能把他改成templates呢?
这样就能用来sort 任何数据。
我的目前sort的方法是这样的:
struct emp
{
char surname[15];
char given[15];
char depart[20];
double payRate;
char eyeColor[10];
};
void sort(struct emp person[], int nums, compare cmp, copy cpy)
{
void *key;
int j, i, flag;
struct emp temp;
for (j = 1; j < nums; j ++)
{
i = j - 1;
(*cpy)(key, (person + j));
temp = person[j];
flag = -1;
while(flag)
{
if ((*cmp)(key, (person + i)) >=0)
{
person[i + 1] = temp;
flag = 0;
}
else
{
person[i + 1] = person[i];
i --;
if(i == -1)
{
person[0] = temp;
flag = 0;
}//end if
}//end else
}//end while
}//end for
}//end sort
int cmp_surname(void* p, void* q)
{
char p1[30];
p = p1;
struct emp *q1 = q;
return strcmp(p, q1 ->surname);
}
void cpy_surname(void* p, void* q)
{
char p1[30];
p = p1;
struct emp *q1 = q;
strcpy(p, q1 ->surname);
}
我知道用templates的话,应该templates
但是具体的sort方法该怎么修改呢?
研究了好久,网上的例子都是简单地比较两个integer啥的。
希望版上的可以指点一下,包子答谢。
谢谢啦! |
|