我有一个单一的.h
文件和多个.cpp
文件的项目。头文件包含当前实现排序的名称空间UF
(缩写或 seful f联合)。有没有办法避免有全局变量来实现qsort
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;
}
目前,需要基本阵列base_arr_int
由qsort
访问和比较器功能的上方在main.cpp
声明并在UF.cpp
externed:
这是通过具有在UF.cpp
由此限定一个比较器进行。
我访问qsort
在不同的类,SEP
如下。首先,在SEP.cpp
,我extern 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 ::排序'而不是'qsort'? –
@NickyC是的,如果它有助于避免main.cpp中的全局变量。另外,我不会对'比率'数组本身进行排序,而是对索引进行排序,以便比率[indices [0]]是最小的元素,比率[indices [1]]'上。 'std :: sort'有助于这个功能吗? – Tryer