I just needed to read the input from right to left.
for (auto iter = _expression.rbegin(); iter != _expression.rend(); iter++)
Fully reverse the parenthesis role.
_expression.insert(_expression.begin(), "(");
pile.push(")");
And in the loop.
if (*iter == ")")
pile.push(*iter);
else if (*iter == "(")
{
while (pile.top() != ")")
{
sortie.push(pile.top());
pile.pop();
}
pile.pop();
}
And reverse the output (I used a stack).
while (!sortie.empty())
{
_expression.push_back(sortie.top());
sortie.pop();
}