我正在学习堆数据结构,因为有两种类型的堆,我想提供一个选项供用户选择。我正在制作一个正常的程序,提供诸如插入,遍历,搜索等选项。如何使用变量调用函数?
现在为了插入到两个堆中,我做了两个函数,即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