我有一個單一的.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