Array.h 756 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #ifndef ARRAY_H
  2. #define ARRAY_H
  3. #include "common/utils/Types.h"
  4. template<typename T, u64 N>
  5. class Array final {
  6. public:
  7. Array(const T& t) {
  8. for(u64 i = 0; i < N; i++) {
  9. data[i] = t;
  10. }
  11. }
  12. const T& operator[](u64 index) const {
  13. return data[index];
  14. }
  15. T& operator[](u64 index) {
  16. return data[index];
  17. }
  18. const T* operator+(u64 index) const {
  19. return data + index;
  20. }
  21. T* operator+(u64 index) {
  22. return data + index;
  23. }
  24. T* begin() {
  25. return data;
  26. }
  27. const T* begin() const {
  28. return data;
  29. }
  30. T* end() {
  31. return data + N;
  32. }
  33. const T* end() const {
  34. return data + N;
  35. }
  36. private:
  37. T data[N];
  38. };
  39. #endif