如何在算术分析器从中缀转换为后缀表示法中改进存储函数的数据结构?在一个结构中存储函数和运算符的C++
在这一刻我使用的字符数组的数组:
char *funct[] = { "sin", "cos", "tan"... }
char text[] = "tan";
这impementation是有点混乱,导致了以下comparisions,如果我们测试的字符是一个函数
if (strcmp (funct[0], text) == 0) || (strcmp (funct[1], "text) == 0) || (strcmp (func[2], text) == 0))
{
... do something
}
(或for循环版本)。
如果有很多功能(和大量的比较),索引引用导致错误,并且不清楚。当我们删除/添加一个新功能时,还有必要更改索引...
如何改进这样的结构以便易于阅读,易于维护和易于扩展?
我在想枚举
其结果
if (strcmp (funct[Fsin], text) == 0) || (strcmp (funct[Fcos], "text) == 0) || (strcmp (func[Ftan], text) == 0))
{
...
,但有可能是一个更好的解决办法...
你写C或C++代码?您已将问题标记为C++,但您发布的代码是C,而不是C++。这也不是很清楚你想通过比较来达到什么目的。 –
你可以使用'std :: string'的'std :: array'或'std :: vector'并使用'std :: find'。 – chris
第二个例子是否正确?如果你使用一个枚举,你可以使用一个直接的'switch'来完成特定于操作符的处理。 – Lindydancer