私がやっていることは、スワップと比較の数を含むアルゴリズムを解析する関数を作ることです。この関数を再利用するためにはアルゴリズムを解析するために各アルゴリズム関数を呼び出す必要があります。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;
}
}
は今、あなたは選択ソートは、私が数え、挿入、迅速、ヒープと、それを置き換えるマージする必要があります。ここで参照してください。ここでは
は、関数のコードです。私はちょうどメインに何度も何度もコードを書いてソート機能を置き換えることができますが、これを行うための解決策がいくつかあるはずです。私はそれを見つけることができません、私はパラメータとして別の関数を取る関数を作ることを考えていたが、再び、いくつかのアルゴリズムの機能は2つの他の3を取る、そしてそれを行うときにあなたはすることができないvoid analyzeAlgorithms(void (*function)(int*, int, int, int x = 0)).
(私はいくつかの無関係なものを省略)のおかげで、事前
なぜあなたは関数ポインタを使用することはできませんか?あなたの関数の中にはいくつかの関数が2つあり、3つの引数を取るものがある場合は、3つ目のパラメータをオプションにして、必要なときに無視します。 – Alex
もう一つの選択肢は、バリデーションテンプレートパラメータパックを持つ関数を作成し、それを対応する 'std :: function'パラメータに転送することです。 – user0042
@Alex私がポインタ関数を使用する場合、私はいくつかのアルゴリズムは2または3を取ると述べたように。 C++コンパイルでは、\t関数(bigArray [i]、100、????????)のようなパラメータを実装する必要がありました。 –