将问题转化为单个栈的出栈入栈(只对temp栈进行操作。),然后考虑栈满的时候创建新栈,栈空的时候取集合栈的栈顶。

class SetOfStacks {
public:
    vector<vector<int> > setOfStacks(vector<vector<int> > ope, int size) {
        // write code here
        stack<stack<int> > result;
        int len=ope.size();
        stack<int> temp;
        for(int i=0;i<len;i++){
            //push
            if(ope[i][0]==1){
                // temp full
                if(temp.size()==size){
                    result.push(temp);
                    stack<int>().swap(temp);
                    temp.push(ope[i][1]);
                }
                // temp has freespace
                else
                    temp.push(ope[i][1]);
            }
            //pop
            else{
                // temp empty
                if(temp.size()==0){
                    temp=result.top();
                    result.pop();
                    temp.pop();
                }
                // temp has element
                else{
                    temp.pop();
                }
            }
        }
        if(temp.size())
            result.push(temp);
        int rows=result.size();
        vector<vector<int> > ret(rows);
        for(int i=rows-1;i>=0;i--){
            stack<int> tmp=result.top();
            result.pop();
            int cols=tmp.size();
            vector<int> t(cols);
            for(int j=cols-1;j>=0;j--){
                t[j]=tmp.top();
                tmp.pop();
            }
            ret[i]=t;
        }
        return ret;
    }
};