Array.h 830 B

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