#include <stack>
#include <vector>
#include <iostream>
// Для простоты примера стек содержит целочисленные переменные
// А в качестве промежуточного буфера используется не файл, а vector
int main()
{
std::stack<int> s;
// Заполнение стека числами от 0 до 9
for(int i = 0; i < 10; ++i)
s.push(i);
// Допустим в стеке должны остаться все числа, кроме 5
// Соответственно необходимо удалить элемент со значением 5
std::vector<int> v;
while(!s.empty())
{
if(s.top() != 5) // Это ключевой момент, в стек помещаются
v.push_back(s.top()); // все элементы не равные 5
s.pop();
}
// Теперь стек пустой, а вектор содержит все значения стека, кроме 5.
// При этом первый элемент вектора содержит число 9.
// Чтобы сохранить исходную последовательность в стеке
// необходимо помещать элементы в стек, начиная с конца вектора.
for(int i = v.size() - 1; i >= 0; --i)
s.push(v[i]);
// Для проверки выведем стек на экран
while(!s.empty()) {
std::cout << s.top() << ' ';
s.pop();
}
return 0;
}