所以我想要做的是让函数分析算法,包括它们的交换和比较次数,现在我面临的问题是我需要重用这个函数,但为了分析我需要调用每个算法函数的算法。有没有办法替换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,????????)。 –