C/C++の宿題を片づけます 49代目
■ このスレッドは過去ログ倉庫に格納されています
0260デフォルトの名無しさん
2005/08/26(金) 22:29:12俺も汎用的にしてみた。
void *max_in_array(void *a, int n, int elemsize, int(*cmp)(const void *,const void *))
{
int i;
char *max = a;
char *p = ((char*)a) + elemsize;
char *end = ((char*)a) + elemsize * n;
for(; p < end; p += elemsize)
if( (*cmp)(max, p) < 0 ) max = p;
return max;
}
#define ARRAY_SIZE(a) (sizeof(a)/sizeof(*(a)))
#define MAX_IN_ARRAY(a, cmp, type) \
((type*)max_in_array(a, ARRAY_SIZE(a), sizeof(*(a)), cmp))
int int_cmp(const void *a, const void *b)
{
return *(int*)a - *(int*)b;
}
int main()
{
int x[] = {3,1,4,1,5,9,2};
int max = *MAX_IN_ARRAY(x, int_cmp, int);
printf("max = %d\n", max);
return 0;
}
■ このスレッドは過去ログ倉庫に格納されています