[英]Map enum key and value using function pointer in C++
我對C ++編程非常陌生。 我正在做我的碩士,正在研究教授給出的一個問題。 問題是關於在二叉搜索樹上執行基本操作。 我有一個文件,其格式如下:
I 1015291402
I 729831403
I 1005116371
F 757970570
D 1005116371
F 729831403
I 1218751282
D 1015291402
I 582339464
I 92421221
可以在搜索樹上完成三種基本操作:插入,刪除和查找。 所以我需要逐行讀取該文件進行操作。 以下是我到目前為止編寫的代碼。
string line;
ifstream infilesmall("inputfile_small.txt");
//ifstream infilelarge("inputfile_small.txt");
while (getline(infilesmall, line))
{
istringstream iss(line);
vector<string> tokens;
copy(istream_iterator<string>(iss), istream_iterator<string>(), back_inserter(tokens));
string str = ((tokens)._Myfirst)[0];
cout<< ((tokens)._Myfirst)[1];
//char operation = new char(((tokens)._Myfirst)[0]);
/*typedef void (*funcPointer)(int);
void String1Action(int arg);
void String2Action(int arg);
map<string, funcPointer> stringFunctionMap;
stringFunctionMap.add("string1", &String1Action);*/
insert(t,10);
find(t,0);
//Delete(t,10);
}
因此,問題是通過拆分行來調用“插入”,“刪除”和“查找”的理想方式是什么? 我需要照顧好表演。 我發現的一種方法是創建具有鍵和值對並具有函數指針的枚舉。 因此根據鍵值(“ I”,“ D”,“ F”),將使用其各自的值來調用適當的函數。 您能否建議我/更正我的方法並指導我使用此代碼。 感謝您的時間。 謝謝
您的代碼不必要地復雜。 您可以一次從文件中讀取運算符和數字,然后根據運算符的值適當地使用數字。
char op;
int number;
while ( infilesmall >> op >> number )
{
switch (op)
{
case 'I':
insertData(number);
break;
case 'D':
deleteData(number);
break;
case 'F':
findData(number);
break;
default:
std::err << "Unknown operator, " << op << std::endl;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.