需要实现栈的题目居然没有禁用stack?!那就直接用呗~那min函数就会麻烦点,因为stack不能用下标访问,所以要遍历栈中元素,就得把栈顶数据全都搬开,才能找到下一个元素,至于搬开来的元素嘛。。。肯定得存着吧?要是不存就把前面的数据全丢了,那可不行啊,所以就开了个栈用来储存搬开的元素(两次栈间传数据,反转两次,还是原来那样),而最后新开的那个栈必须清空,否则内存会泄露(被这个坑了一次)

class Solution {
public:
    void push(int value) {
        a.push(value);
    }
    void pop() {
        a.pop();
    }
    int top() {
        return a.top();
    }
    int min() {
        stack<int> b;
        int min=10000;
        while(!a.empty()){
            b.push(a.top());
            if(a.top()<min){
                min=a.top();
            }a.pop();
        }while(!b.empty()){
            a.push(b.top());
            b.pop();//清空元素,避免泄露
        }
        return min;
    }
private:
    stack<int> a;
};