Мне нужно проверить, является ли элемент частью стека. Вот функция, которую я написал:Проверьте, является ли элемент частью стека
template<class T>
bool CheckElem(Stack<T>& A, T x)
{
Stack<T> B;
bool check = false;
while(!A.Empty())
{
if(A.Top() == x) check = true;
B.Push(A.Top());
A.Pop();
}
A = B;
if(check) return true;
return false;
}
Как вы видите, мне нужно, чтобы поп всех элементов стека, чтобы иметь возможность проверить, например, последний элемент стека. И я сохраняю элементы в другом стеке, поэтому я не потеряю свои данные. Но элементы перевернуты, как и во втором стеке, и фактически это становится чем-то вроде связанного списка. Мой вопрос в том, есть ли другой способ проверить, находится ли элемент в стеке, без необходимости вставлять и сохранять элементы стека в другом месте.
Если это для класса или чего-то подобного, и вы хотите рассматривать это как «чистый» стек, тогда нет другого пути. –
Вам нужно реализовать стек как есть или вы можете изменить так, чтобы стек был реализован с вектором внутри? –
Учтите, что вам нужно как-то развернуть B до того, как вы сделаете 'A = B;' –