搜索堆栈中的特定元素

geo*_*ano 2 c++ search stack data-structures

我有兴趣将这个Python代码移植到C++.作为港口的一部分,我用std::stack<stack>头.如何确定某个字符是否包含在某个字符中stack<char>?例如:

std::stack<char> myStack

if (!('y' is included in myStack)) // I know that this is wrong
{
}
Run Code Online (Sandbox Code Playgroud)

tem*_*def 9

C++ stack不支持随机访问,因此没有直接的方法来使用a stack来检查是否包含元素.但是,您可以复制堆栈,然后连续pop关闭该堆栈,直到找到该元素.

或者,如果您确实需要搜索stack,则可以考虑改为使用deque支持随机访问的a.例如,您可以使用a上的find算法deque来搜索元素:

find(myDeque.begin(), myDeque.end(), myValue);
Run Code Online (Sandbox Code Playgroud)

如果你需要经常搜索stack,请考虑保持一个平行setstack存储相同的元素stack.这样,您可以使用set::find(有效地)检查元素是否存在.

希望这可以帮助!

  • find函数返回迭代器而不是布尔值。您可以编写if(std :: find(myStack.begin(),myStack.end(),x)!= myStack.end()){...} (2认同)