Template Class TieredVector

Nested Relationships

Nested Types

Class Documentation

template<class T>
class TieredVector

a sequence with access in O( 1 ) and insertion and removal anywhere in O( sqrt n ), in circular blocks of b items

Public Types

using value_type = T
using size_type = std::size_t
using difference_type = std::ptrdiff_t
using reference = T&
using const_reference = const T&
using iterator = Iterator<false>
using const_iterator = Iterator<true>

Public Functions

TieredVector(void) = default
inline bool empty(void) const
inline std::size_t size(void) const
inline std::size_t block(void) const

the items of a block

inline T &operator[](std::size_t i)
Pre:

i < size()

inline const T &operator[](std::size_t i) const
void insert(std::size_t i, const T &x)

x at the index i, the items from i one place on

Pre:

i <= size()

void erase(std::size_t i)

removes the item at the index i, the items after it one place back

Pre:

i < size()

inline void push_back(const T &x)
inline void pop_back(void)
Pre:

the vector is not empty

void clear(void)
inline iterator begin(void)
inline iterator end(void)
inline const_iterator begin(void) const
inline const_iterator end(void) const
inline const_iterator cbegin(void) const
inline const_iterator cend(void) const
template<bool Const>
class Iterator

the iterator by index, random access, on items const if Const

Public Types

using iterator_category = std::random_access_iterator_tag
using value_type = T
using difference_type = std::ptrdiff_t
using reference = std::conditional_t<Const, const T&, T&>
using pointer = std::conditional_t<Const, const T*, T*>

Public Functions

Iterator(void) = default
inline Iterator(Owner *v, std::size_t i)
template<bool K>
inline Iterator(const Iterator<K> &o)
inline reference operator*(void) const
inline pointer operator->(void) const
inline reference operator[](difference_type k) const
inline Iterator &operator++(void)
inline Iterator &operator--(void)
inline Iterator operator++(int)
inline Iterator operator--(int)
inline Iterator &operator+=(difference_type k)
inline Iterator &operator-=(difference_type k)
inline bool operator==(const Iterator &o) const
inline auto operator<=>(const Iterator &o) const

Friends

inline friend Iterator operator+(Iterator a, difference_type k)
inline friend Iterator operator+(difference_type k, Iterator a)
inline friend Iterator operator-(Iterator a, difference_type k)
inline friend difference_type operator-(const Iterator &a, const Iterator &b)