Как в стеке найти элементы удовлетворяющие условиям и выписать их в выходную строку?

Реализую алгоритм сортировочной станции. Но не знаю, как реализовать следующую часть алгоритма: Если символ операция и стек не пуст, а приоритет символа вершины стека, меньше приоритета входного символа, то из стека в выходную строку выталкиваются все символы операций с меньшим или равным приоритету входного символа, после чего входной символ операции заносится в стек. Подскажите, как можно это реализовать?

#include <iostream>
#include <string>
#include <stack>
 
using namespace std;
 
bool is_number(char ch)
{
    bool result = false;
    if (ch >= '0' && ch <= '9')
        result = true;
    return result;
}
 
int prioritet(char ch)
{
    int prioritet;
    switch (ch)
    {
    case '*':
    case '/':
        return 4;
    case '-':
    case '+':
        return 3;
    case '(':
        return 2;
    case ')':
        return 1;
    }
    return 0;
}
 
string Reverse_Polish_Natation(string input_string)
{
    char ch;
    string output_string;
    stack<char> stek_operator;
    stack<char> tmp_stek_operator;
 
    for (int i = 0; i < input_string.size(); ++i)
    {
        ch = input_string[i];
 
        if (is_number(ch) == true)
        {
            while (is_number(ch) == true)
            {
                output_string.push_back(ch);
                i++;
                ch = input_string[i];
            }
            output_string.push_back(' ');
        }
        if (ch == ' ')
        {
            while (input_string[i] == ' ')
                i++;
            i--;
        }
 
        if (prioritet(ch) == 4 && prioritet(ch) == 3 && prioritet(ch) == 2)
        {
            if (stek_operator.empty())
            {
                stek_operator.push(ch);
            }
            if (!stek_operator.empty() || prioritet(ch) < prioritet(stek_operator.top()))
            {
                stek_operator.push(ch);
            }
            if (!stek_operator.empty() || prioritet(stek_operator.top()) < prioritet(ch))
            {
                
            }
        }
  }
 
 
int main()
{
    string input_string = "(2 + 3) * 4";
    Reverse_Polish_Natation(input_string);
}

Ответы (0 шт):