ヒープデータ構造を学習していました。ヒープには2種類のタイプがあるため、選択肢をユーザーに提供したいと考えました。私は挿入、トラバース、検索などのオプションを提供する通常のプログラムを作っています。変数を使用して関数を呼び出すにはどうすればよいですか?
両方のヒープに挿入するために、min_insert()とmax_insert()という2つの関数を作成しました。私は、コードの2つの設定を記述する必要はありませんように、変数に私の機能を割り当てたい
class MinHeap{
Node *root;
int choice;
void min_insert();
void max_insert();
public:
Heap(){
root = NULL;
cout << "Do you want\n1.Max Heap\n2.Min Heap";
}
};
、ケース1のための1とケース2
説明のために1: 私が行っていた方法
Heap(){
root = NULL;
cout << "Do you want\n1.Max Heap\n2.Min Heap";
cin >> choice;
if(choice == 1){
cout << "1.INSERT\2.SEARCH\n3.TRAVERSAL";
cin >> innerChoice;
switch(innerChoice){
case1: max_insert() ;break;
case2: search();break;
case3:traversal();break;
}
}
else{
cout << "1.INSERT\2.SEARCH\n3.TRAVERSAL";
cin >> innerChoice;
switch(innerChoice){
case1: min_insert() ;break;
case2: search();break;
case3:traversal();break;
}
}
}
私は何をしたい:
Heap(){
root = NULL;
cout << "Do you want\n1.Max Heap\n2.Min Heap";
cin >> choice;
if(choice == 1){
function_variable = max_insert();
}else{
function_variable = min_insert();
}
cout << "1.INSERT\2.SEARCH\n3.TRAVERSAL";
cin >> choice;
switch(choice){
case1: function_variable ;break;
case2: search();break;
case3:traversal();break;
}
}
私は何をすべきコードを書くには?
私はこれが最善の方法であるとは確信していないが、少なくともあなたが尋ねていることをする方法を知っているので、['std :: function '](http://en.cppreference.com/w/cpp/utility/functional/function)。同じインターフェイスを実装する2つの異なるクラスについて話している場合、継承を使用することができます。 – BoBTFish