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

标签 c++ c++11 visual-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;
   }
}

关于c++ - 在 C++ 中使用函数指针映射枚举键和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35876922/

相关文章:

c++ - std::make_shared 作为默认参数不编译

c++ - 抑制/删除 Eclipse CDT 中的特定错误

python - C++特征库中的argmax()方法

c++ - const vector 和 const 迭代器之间的区别

c++ - 如何通过这个简单示例在 C++11 中正确使用可变参数模板?

c++ - C++ 标准是否要求其自己的迭代器不可进行移动/复制构造?

c++ - 图像的像素格式始终返回 32 位

c++ - 链接到 VS2012 中的 Boost Regex 库

c++ - C++ 中的 memcpy 等价物是什么

c++ - 在 C++11 中的类中的不同方法之间共享 random_number_engine