Gobelijn API documentation  - generated for commit a0cbea7
 All Classes Namespaces Files Functions Variables Typedefs Friends Macros Pages
stack7.hpp
Go to the documentation of this file.
1 #pragma once
2 
8 #include <deque>
9 #include <stdexcept>
10 
15 template <typename T, typename ALLOC = std::allocator<T>, template <typename, typename> class CONT = std::deque>
16 class Stack
17 {
18 public:
20  Stack() : elems(CONT<T, ALLOC>()) {}
21 
24  bool empty() const { return elems.empty(); }
25 
27  void pop();
28 
31  void push(const T& e);
32 
35  T top() const;
36 
37 private:
38  CONT<T, ALLOC> elems;
39 };
40 
41 // -------------------- Implementations ----------------------------------------
42 
43 template <typename T, typename ALLOC, template <typename, typename> class CONT>
45 {
46  if (elems.empty()) {
47  throw std::out_of_range("Stack<>::pop(): empty stack");
48  }
49  elems.pop_back();
50 }
51 
52 template <typename T, typename ALLOC, template <typename, typename> class CONT>
53 void Stack<T, ALLOC, CONT>::push(T const& elem)
54 {
55  elems.push_back(elem);
56 }
57 
58 template <typename T, typename ALLOC, template <typename, typename> class CONT>
60 {
61  if (elems.empty()) {
62  throw std::out_of_range("Stack<>::top(): empty stack");
63  }
64  return elems.back();
65 }
void pop()
Pop element off the stack.
Definition: stack1.hpp:43
CONT< T, ALLOC > elems
Container for the stack elements.
Definition: stack7.hpp:38
void push(const T &e)
Pushes element onto stack.
Definition: stack1.hpp:52
std::vector< T > elems
Container for the stack elements.
Definition: stack1.hpp:37
bool empty() const
Check whether stack is empty.
Definition: stack7.hpp:24
Stack class using vector as element container.
Definition: stack1.hpp:15
Stack()
Default constructor.
Definition: stack7.hpp:20
T top() const
Return top element of the stack (but not pop-ing it).
Definition: stack1.hpp:58