所以我想要做的是讓函數分析算法,包括它們的交換和比較次數,現在我面臨的問題是我需要重用這個函數,但爲了分析我需要調用每個算法函數的算法。有沒有辦法替換C++中的方法中的函數
下面是函數的代碼:
bool flag = false;
for (int i = 0; i < 6; i++)
{
if (!flag)
{
selectionSort(bigArray[i], 100);
printData(fileNames[i],swaps,comparisons);
comparisons = 0;
swaps = 0;
flag = true;
}
else
{
selectionSort(bigArray[i], 1000);
printData(fileNames[i],swaps,comparisons);
comparisons = 0;
swaps = 0;
flag = false;
}
}
現在你看到選擇排序是我需要來取代它,以插入,快速,堆,合併計算。我可以在main中重複編寫代碼並替換排序函數,但我認爲應該有某種解決方案來完成此操作。我只是無法找到它,我曾想過創建一個函數,將另一個函數作爲參數,但是再一次,其中一些算法函數需要2個其他3個函數,並且在執行此操作時,您不能只執行void analyzeAlgorithms(void (*function)(int*, int, int, int x = 0)).
任何幫助將不勝感激在此先感謝
爲什麼你不能使用函數指針?如果你的問題是你的一些函數需要兩個,一些需要三個參數,你可以使第三個參數是可選的,並在需要時忽略它。 – Alex
另一種選擇是使函數具有可變參數模板參數包,並將其轉發給匹配的'std :: function'參數。 – user0042
@Alex如果我使用指針函數,正如我所說的一些算法需要2或3個。 C++編譯迫使你實現參數\t函數(bigArray [i],100,????????)。 –