Ich habe einen einfachen Stack in C++ implementiert.
Wie würdet ihr die pop() bzw. top() Methode implementieren, speziell den Fall, wenn eine der Methoden aufgerufen wird obwohl der Stack leer ist?
Code: Alles auswählen
class Stack
{
private:
protected:
int * const _begin;
int * const _end;
int * _current;
public:
Stack(unsigned int size);
~Stack();
void push(int value);
int pop();
bool empty() const;
int top() const;
int const * begin() const;
int const * end() const;
};
Code: Alles auswählen
#include "stack.hpp"
Stack::Stack(unsigned int size = 10)
:
_begin(new int[size]),
_end(_begin + size - 1),
_current(_begin - 1)
{}
Stack::~Stack()
{
delete [] _begin;
}
void Stack::push(int value)
{
if (_current < _end)
{
_current++;
*_current = value;
}
}
int Stack::pop()
{
int value = 0;
if (_current >= _begin)
{
value = *_current;
_current--;
}
return value;
}
bool Stack::empty() const
{
return (_current < _begin);
}
int Stack::top() const
{
int value = 0;
if (_current >= _begin)
{
value = *_current;
}
return value;
}
int const * Stack::begin() const
{
return _begin;
}
int const * Stack::end() const
{
return _end;
}
Laut einer anderen Meinung wäre hier jedoch das Werfen einer Exception (also bei top und pop) besser.
Was meint ihr?
LG
Daniel