怎么用STL语言编写一个公示?

求学长学姐解答,这一部分我没有学明白,请问如果求得下面公式的计算过程?

img

以下是一个使用STL编写公式的示例代码:

#include <iostream>
#include <string>
#include <stack>

using namespace std;

int main() {
    string formula = "2*(3+4)/5-6";

    stack<char> operators;
    stack<double> operands;

    for (char c : formula) {
        if (isdigit(c)) {
            operands.push(c - '0');
        } else if (c == '(') {
            operators.push(c);
        } else if (c == ')') {
            while (operators.top() != '(') {
                char op = operators.top();
                operators.pop();
                double b = operands.top();
                operands.pop();
                double a = operands.top();
                operands.pop();

                if (op == '+') {
                    operands.push(a + b);
                } else if (op == '-') {
                    operands.push(a - b);
                } else if (op == '*') {
                    operands.push(a * b);
                } else if (op == '/') {
                    operands.push(a / b);
                }
            }
            operators.pop();
        } else if (c == '+' || c == '-' || c == '*' || c == '/') {
            while (!operators.empty() && operators.top() != '(' && ((c == '+' || c == '-') ? 1 : 2) <= ((operators.top() == '+' || operators.top() == '-') ? 1 : 2)) {
                char op = operators.top();
                operators.pop();
                double b = operands.top();
                operands.pop();
                double a = operands.top();
                operands.pop();

                if (op == '+') {
                    operands.push(a + b);
                } else if (op == '-') {
                    operands.push(a - b);
                } else if (op == '*') {
                    operands.push(a * b);
                } else if (op == '/') {
                    operands.push(a / b);
                }
            }
            operators.push(c);
        }
    }

    while (!operators.empty()) {
        char op = operators.top();
        operators.pop();
        double b = operands.top();
        operands.pop();
        double a = operands.top();
        operands.pop();

        if (op == '+') {
            operands.push(a + b);
        } else if (op == '-') {
            operands.push(a - b);
        } else if (op == '*') {
            operands.push(a * b);
        } else if (op == '/') {
            operands.push(a / b);
        }
    }

    cout << formula << " = " << operands.top() << endl;

    return 0;
}


```