47template <
typename Container>
class ShiftArray :
public Container {
48 using value_type =
typename Container::value_type;
66 explicit ShiftArray(Container&& base) : Container{std::move(base)} {}
73 void set_start(
const size_t& start) { this->_start = start; }
81 auto operator[](
const size_t& index)
const ->
const value_type& {
82 assert(index >= this->_start);
83 return Container::operator[](index - this->_start);
93 return Container::operator[](index - this->_start);
Shift Array container with shifted index access.
Definition array_like.hpp:47
ShiftArray(Container &&base)
Construct a new Shift Array object.
Definition array_like.hpp:66
auto operator[](const size_t &index) -> value_type &
Access element with shifted index (non-const version).
Definition array_like.hpp:92
ShiftArray()
Construct a new Shift Array object.
Definition array_like.hpp:59
void set_start(const size_t &start)
Set the start index for shifted access.
Definition array_like.hpp:73
auto operator[](const size_t &index) const -> const value_type &
Access element with shifted index (const version).
Definition array_like.hpp:81