【发布时间】:2018-03-07 02:13:33
【问题描述】:
我有一个项目,其中包含一个 .h 文件和多个 .cpp 文件。头文件包含一个当前实现排序的命名空间UF(useful functions 的缩写)。
这是通过在UF.cpp 中定义一个比较器来完成的,因此:
int compar_int_asc(const void *a, const void *b)
{
int aa = *((int *)a), bb = *((int *)b);
if (base_arr_int[aa] < base_arr_int[bb])
return -1;
if (base_arr_int[aa] == base_arr_int[bb])
return 0;
if (base_arr_int[aa] > base_arr_int[bb])
return 1;
}
目前qsort需要访问的基础数组base_arr_int和上面的比较器函数在main.cpp中声明,在UF.cpp中被externed。
我在不同的类SEP 中访问qsort,如下所示。首先,在SEP.cpp,我外部base_arr_int。然后,如果ratios[100] 是SEP 本地和本地的整数数组,我在SEP.cpp 内执行以下操作。
base_arr_int = ratios;
qsort(indices, 100, sizeof(int), UF::compar_int_asc);
这是用多个类实现 qsort 的最佳方式吗?
特别是,我想尽可能避免使用main.cpp 中定义的全局变量。有没有替代的设计?
【问题讨论】:
-
你想考虑
std::sort而不是qsort吗? -
@NickyC 是的,如果它有助于避免 main.cpp 中的全局变量。另外,我不对
ratios数组本身进行排序,而是对indices进行排序,使ratios[indices[0]]是最小的元素,ratios[indices[1]]是下一个最小的元素,依此类推。std::sort是否有助于实现该功能?