C ++ stack
не поддерживает произвольный доступ, поэтому нет прямого способа использовать stack
для проверки наличия элемента.Однако вы можете сделать копию стека и затем непрерывно pop
снимать этот стек до тех пор, пока не будет найден элемент.
В качестве альтернативы, если вам нужно выполнить поиск по stack
, вы можете вместо этого использоватьdeque
, который поддерживает произвольный доступ.Например, вы можете использовать алгоритм find
на deque
для поиска элемента:
find(myDeque.begin(), myDeque.end(), myValue);
Если вам нужны частые поиски stack
, попробуйте сохранить параллель set
вдольс stack
, в котором хранятся те же элементы, что и stack
.Таким образом, вы можете просто использовать set::find
, чтобы проверить (эффективно), существует ли элемент.
Надеюсь, это поможет!