Stack.h 841 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #ifndef STACK_H
  2. #define STACK_H
  3. #include "utils/List.h"
  4. template<typename T, int N>
  5. class Stack final {
  6. List<T, N> data;
  7. public:
  8. bool push(const T& t) {
  9. return data.add(t);
  10. }
  11. bool push(T&& t) {
  12. return data.add(std::move(t));
  13. }
  14. template<typename... Args>
  15. bool push(Args&&... args) {
  16. return data.add(std::forward<Args>(args)...);
  17. }
  18. void clear() {
  19. data.clear();
  20. }
  21. bool pop() {
  22. return data.remove(data.getLength() - 1);
  23. }
  24. bool isEmpty() const {
  25. return data.getLength() == 0;
  26. }
  27. T& peek() {
  28. return data[data.getLength() - 1];
  29. }
  30. const T& peek() const {
  31. return data[data.getLength() - 1];
  32. }
  33. template<int L>
  34. void toString(StringBuffer<L>& s) const {
  35. s.append(data);
  36. }
  37. };
  38. #endif