Array.hpp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #ifndef CORE_ARRAY_HPP
  2. #define CORE_ARRAY_HPP
  3. #include "core/utils/ArrayString.hpp"
  4. namespace Core {
  5. template<typename T, size_t N>
  6. class Array final {
  7. T data[N];
  8. public:
  9. constexpr Array() = default;
  10. constexpr Array(const T& t) {
  11. fill(t);
  12. }
  13. constexpr void fill(const T& t) {
  14. for(size_t i = 0; i < N; i++) {
  15. data[i] = t;
  16. }
  17. }
  18. constexpr T& operator[](size_t index) {
  19. return data[index];
  20. }
  21. constexpr const T& operator[](size_t index) const {
  22. return data[index];
  23. }
  24. constexpr T* begin() {
  25. return data;
  26. }
  27. constexpr T* end() {
  28. return data + N;
  29. }
  30. constexpr const T* begin() const {
  31. return data;
  32. }
  33. constexpr const T* end() const {
  34. return data + N;
  35. }
  36. static constexpr size_t getLength() {
  37. return N;
  38. }
  39. template<typename String>
  40. check_return Error toString(String& s) const {
  41. return Core::toString(s, *this);
  42. }
  43. };
  44. }
  45. #endif