繁体   English   中英

使用C ++中的函数指针映射枚举键和值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM