From 4b19c29a29621853a858137e51ea2814e784bf83 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 13 Oct 2025 23:34:56 +0300 Subject: [PATCH] add util::span --- src/util/span.hpp | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/util/span.hpp diff --git a/src/util/span.hpp b/src/util/span.hpp new file mode 100644 index 00000000..a9ab79b2 --- /dev/null +++ b/src/util/span.hpp @@ -0,0 +1,42 @@ +#pragma once + +#include + +namespace util { + template + class span { + public: + constexpr span(const T* ptr, size_t length) + : ptr(ptr), length(length) {} + + const T& operator[](size_t index) const { + return ptr[index]; + } + + const T& at(size_t index) const { + if (index >= length) { + throw std::out_of_range(); + } + return ptr[index]; + } + + auto begin() const { + return ptr; + } + + auto end() const { + return ptr + length; + } + + const T* data() const { + return ptr; + } + + size_t size() const { + return length; + } + private: + const T* ptr; + size_t length; + }; +}