#include<vector>
#include<string>
#include<iostream>
using namespace std;
class Stack
{
public:
bool push(const string &elem);
bool pop(string &elem);
bool peek(string &elem);
bool empty();
bool full();
int size() { return _stack.size();}
private:
vector<string> _stack;
};
inline bool Stack::empty()
{
return _stack.empty();
}
inline bool Stack::full()
{
return _stack.size()==_stack.max_size();
}
#include "Stack.h"
bool Stack::pop(string &elem)
{
if(empty()) return false;
elem=_stack.back();
_stack.pop_back();
return true;
}
bool Stack::push(const string &elem)
{
if(full()) return false;
_stack.push_back(elem);
return true;
}
bool Stack::peek(string &elem)
{
if(empty()) return false;
elem=_stack.back();
return true;
}
#include "Stack.h"
int main()
{
Stack my_stack;
my_stack.push(string("hello"));
my_stack.push(string("world"));
my_stack.push(string("stark"));
my_stack.push(string("red"));
string elem;
my_stack.peek(elem);
cout<<elem<<endl;
my_stack.pop(elem);
cout<<elem<<endl;
my_stack.peek(elem);
cout<<elem<<endl;
cout<<my_stack.size()<<endl;
return 0;
}