优先功能

时间:2011-01-23 00:58:52

标签: c++ stack

我正在尝试编写一个函数,它在我的主程序中,将比较用户输入的运算符的优先级。该函数将查找以下运算符:

+-*/ */具有最高优先级+,{ {1}}具有最低优先级。

优先级最低的运算符位于堆栈的底部,而优先级最高的运算符位于堆栈的顶部。因此,如果用户输入-,则应在终端中显示+-*/

关于我应该怎么做的任何想法?

2 个答案:

答案 0 :(得分:4)

将所有运算符读入std::string。编写具有以下类型的函数:

bool is_higher_precedence(char lhs, char rhs);

此函数应返回lhs的优先级是否高于rhs

然后,您可以将此函数用作std::sort的函数参数,以按优先级对运算符进行排序。

答案 1 :(得分:4)

只需使用std::sort对自定义谓词进行排序。

int precedence(char op)
{
    if (op == '*' || op == '/') return 0;
    return 1;
}

bool comparePrecedence(char a, char b)
{
    return precedence(a) < precedence(b);
}

int main()
{
    char input[] = "+-/";
    std::sort(input, input + 3, &comparePrecedence);
}

显然,您只需将其添加到precedence函数中即可添加其他运算符。