// Type your C++ code and click the "Run Code" button!
// Your code output will be shown on the left.
// Click on the "Show input" button to enter input data to be read (from stdin).
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
#define MAX_STACK_SIZE 20
template <class T>
class StackSet {
private:
vector<stack<T>> stacks;
public:
void push(T e);
void pop();
void print();
int size();
};
template <class T>
int StackSet<T>::size() {
return stacks.size();
}
template <class T>
void StackSet<T>::push(T e) {
if(stacks.empty() || stacks.back().size() >= MAX_STACK_SIZE) {
stack<T> ns;
ns.push(e);
stacks.push_back(ns);
} else {
stacks.back().push(e);
}
}
template <class T>
void StackSet<T>::pop() {
if(stacks.empty()) return;
stack<T>& sp = stacks.back();
if(sp.empty()) {
stacks.erase(--stacks.end());
stacks.back().pop();
} else {
sp.pop();
}
}
int main() {
StackSet<int> ss;
for(int i = 0; i < 82; i++) ss.push(i);
cout<<ss.size()<<endl;
for(int i = 0; i < 22; i++) ss.pop();
cout<<ss.size()<<endl;
return 0;
}
欢迎关注微信公众号——计算机视觉