List.h 922 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #ifndef LIST_H
  2. #define LIST_H
  3. template<typename T, int L>
  4. class List final {
  5. int entries;
  6. T data[L];
  7. public:
  8. List() : entries(0) {
  9. }
  10. List& add(const T& t) {
  11. if(entries >= L) {
  12. return *this;
  13. }
  14. data[entries++] = t;
  15. return *this;
  16. }
  17. List& clear() {
  18. entries = 0;
  19. return *this;
  20. }
  21. int getLength() const {
  22. return entries;
  23. }
  24. constexpr int getCapacity() const {
  25. return L;
  26. }
  27. T& operator[](int index) {
  28. return data[index];
  29. }
  30. const T& operator[](int index) const {
  31. return data[index];
  32. }
  33. const T* getData() {
  34. return data;
  35. }
  36. T* begin() {
  37. return data;
  38. }
  39. const T* begin() const {
  40. return data;
  41. }
  42. T* end() {
  43. return data + entries;
  44. }
  45. const T* end() const {
  46. return data + entries;
  47. }
  48. };
  49. #endif