123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #ifndef STACK_H
- #define STACK_H
- #include "utils/List.h"
- template<typename T, int N>
- class Stack final {
- List<T, N> data;
- public:
- bool push(const T& t) {
- return data.add(t);
- }
- bool push(T&& t) {
- return data.add(std::move(t));
- }
- template<typename... Args>
- bool push(Args&&... args) {
- return data.add(std::forward<Args>(args)...);
- }
- void clear() {
- data.clear();
- }
- bool pop() {
- return data.remove(data.getLength() - 1);
- }
- bool isEmpty() const {
- return data.getLength() == 0;
- }
- T& peek() {
- return data[data.getLength() - 1];
- }
- const T& peek() const {
- return data[data.getLength() - 1];
- }
-
- template<int L>
- void toString(StringBuffer<L>& s) const {
- s.append(data);
- }
- };
- #endif
|