Здесь, если текущий элемент является последним элементом, вы pop()
и затем обращаетесь к top()
со стеком без элементов.
cout << "Popping " << s.top() << endl;
s.pop();
cout << "Top element is now " << s.top() << endl;
cout << "The stack size is now " << s.size() << endl;
К
cout << "Popping " << s.top() << endl;
s.pop();
if (!s.empty()) {
cout << "Top element is now " << s.top() << endl;
cout << "The stack size is now " << s.size() << endl;
}
Примечание:
Просто будьте осторожны, когда пытаетесь получить доступ к элементам стека, как здесь:
cout << "Top element is: " << s.top() << endl;
Прямо сейчас это не проблема, потому что стек имеет элементов, но это будет случай неопределенного поведения, если стек был пуст при вызове этой строки.