我正在學習堆數據結構,因爲有兩種類型的堆,我想提供一個選項供用戶選擇。我正在製作一個正常的程序,提供諸如插入,遍歷,搜索等選項。如何使用變量調用函數?
現在爲了插入到兩個堆中,我做了兩個函數,即min_insert()和max_insert()。
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,一個用於盒2
說明: 如何我正想寫代碼:
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)。如果您正在討論實現相同接口的兩個不同類,則可能需要使用繼承。 – BoBTFish