STL stack 栈的基本使用

STL stack 基本使用方法

堆栈(stack)是一种较简单的常用容器,是一种受限制的向量,只允许在向量的一端存取元素,后进栈的元素先出栈,即 LIFO。

基本用法

一、定义栈
stack<int> stk;
二、入栈出栈
stk.push(1);
stk.pop();

// 返回顶部元素值
stk.top();
三、栈是否为空
stk.empty() // 空则返回 1

括号匹配

#include <iostream>
#include <stdio.h>
#include <string>
#include <stack>
using namespace std;

int main()
{
    int testNum = 0;
    cin>>testNum;
    while(testNum--){
        string str;
        cin>>str;
        stack<char> brackets;
        for(int i=0;i<str.length();i++){
            if(!brackets.empty()){
                if (str[i]==']' && brackets.top()=='[') brackets.pop();
                else if (str[i]==')' && brackets.top()=='(') brackets.pop();
                else brackets.push(str[i]);
            }else{
                brackets.push(str[i]);
            }
        }
        if(brackets.empty()) cout<<"Yes"<<endl;
        else cout<<"No"<<endl;
    }

    return 0;
}