- 论坛徽章:
- 0
|
回复 #7 converse 的帖子
谢谢回复,
你自己定义针对自定义类型的比较函数举一个test/test_algo.c中的例子
struct abc_t
{
int n_value;
long l_value;
double d_key;
};
static void _abcgreat(const void* cpv_first, const void* cpv_second, void* pv_output);
/* test function body */
{
deque_t t_q = create_deque(struct abc_t);
struct abc_t t_abc;
deque_init(&t_q);
t_abc.n_value = 70;
t_abc.l_value = 934000;
t_abc.d_key = 0.24;
deque_push_back(&t_q, t_abc);
t_abc.n_value = 100;
t_abc.l_value = 3000;
t_abc.d_key = 2.09;
deque_push_back(&t_q, t_abc);
t_abc.n_value = 2;
t_abc.l_value = -18;
t_abc.d_key = 110.00;
deque_push_back(&t_q, t_abc);
t_abc.n_value = -902;
t_abc.l_value = 88000;
t_abc.d_key = -10.007;
deque_push_back(&t_q, t_abc);
algo_for_each(deque_begin(&t_q), deque_end(&t_q), _print_abc);
algo_sort_if(deque_begin(&t_q), deque_end(&t_q), _abcgreat);
printf("\n");
algo_for_each(deque_begin(&t_q), deque_end(&t_q), _print_abc);
deque_destroy(&t_q);
}
static void _abcgreat(const void* cpv_first, const void* cpv_second, void* pv_output)
{
if(((struct abc_t*)cpv_first)->d_key > ((struct abc_t*)cpv_second)->d_key)
{
*(bool_t*)pv_output = true;
}
else
{
*(bool_t*)pv_output = false;
}
} |
|