奇怪的问题,不知道哪里错了,请大侠指教!!
//PeekbackStack.h
#include <deque>
class PeekbackSack
{
public:
PeekbackSack(int size):stack(size){}
bool empty() const { return stack.empty();}
bool full() const {return stack.max_size()==stack.size();}
int top() const {return stack.size()-1;}
int pop()
{
if(empty())
throw "empty stack";
int v=stack(top());
stack.pop_back();
return v;
}
void push(int value)
{
if(full())
throw "stack full";
stack.push_back(value);
}
bool peekback(int index,int &value) const;
private:
deque<int> stack;
};
inline bool
PeekbackSack::peekback(int index,int &value) const
{
if(empty())
{
return false;
}
if(index<0||index>top())
{
value=stack[top()];
return false;
}
value=stack[index];
return true;
}
//PeekbackStack_main.cpp
#include <iostream>
#include "PeekbackStack.h"
using namespace std;
int main()
{
PeekbackStack s(0); //preallocate an empty stack
cout << "stack empty should be true;"
<< "it is" << s.empty()<<"\n";
cout << "stack full should be false;"
<< "it is" << s.full() <<"\n";
for(int i=0;i<5;i++)
s.push(i+10);
int v;
s.peekback(0,v);
cout << "s[0] should be 10; it is" << v <<"\n";
s.peekback(1,v);
cout << "s[1] should be 11; it is" << v <<"\n";
s.peekback(2,v);
cout << "s[2] should be 12; it is" << v <<"\n";
s.peekback(3,v);
cout << "s[3] should be 13; it is" << v <<"\n";
s.peekback(4,v);
cout << "s[4] should be 14; it is" << v <<"\n";
s.peekback(5,v);
cout << "s[5] should be false; it is" << s.peekback(5,v) <<"\n";
}