假设我有一组数据点,表示为双精度数组的数组,所以
double **data;
现在,如果我想通过每个数据点中的某个字段对数据进行排序,比如说第二个字段,我会编写一个比较器来执行以下操作:
int compare_data_second_field(void *a,void *b) { double da = ((double *) a)[1]; double db = ((double *) b)[1]; if (da < db) return -1; else if (da > db) return 1; return 0; }
然后使用qsort按第二个字段对它们进行排序.
我的问题是,如果我事先不知道哪个字段要排序,我该如何概括呢?就像我可能想要排序第一个字段有时和第五个字段,等等,我也希望它是线程安全所以我不想使用全局变量来跟踪要排序的字段,因为多个这些可能会立刻发生.
在C中我只使用自定义排序类,并在类中有一个实例变量来跟踪要排序的字段.我不知道如何在C中做这样的事情.