使用C ++

时间:2016-03-08 19:59:52

标签: 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);
}

所以问题是什么是通过分割线调用插入,删除和查找的理想方式?我需要注意表现。我发现的一种方法是使用键和值对创建枚举并具有函数指针。因此,根据键值(&#34; I&#34;,&#34; D&#34;,&#34; F&#34;),将使用相应的值调用相应的函数。你能否建议我/纠正我的方法,并指导我这个代码。感谢你的时间。感谢

1 个答案:

答案 0 :(得分:3)

你的代码是不必要的复杂。您可以从文件中读取运算符和数字,一次一对,并根据运算符的值适当地使用该数字。

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;
   }
}