StaticVector.hpp

A simple replacement for std::vector when maximum size is known at compile time.

This file is part of Empirical, https://github.com/devosoft/Empirical Copyright (C) 2025 Michigan State University MIT Software license; see doc/LICENSE.md

Note

Status: ALPHA

Defines

INCLUDE_EMP_DATASTRUCTS_STATIC_VECTOR_HPP_GUARD
template<typename VALUE_T, size_t MAX_SIZE>
class StaticVector
#include <StaticVector.hpp>

Public Types

using value_type = VALUE_T
using size_type = std::size_t
using reference = value_type&
using const_reference = const value_type&

Public Functions

StaticVector() = default
StaticVector(const StaticVector&) = default
StaticVector(StaticVector&&) = default
inline StaticVector(size_t count, const VALUE_T &value = VALUE_T())
inline StaticVector(std::initializer_list<VALUE_T> init)
~StaticVector() = default
auto operator<=>(const this_t&) const = default
inline VALUE_T &operator[](size_t pos)
inline const VALUE_T &operator[](size_t pos) const
inline auto begin() noexcept
inline auto begin() const noexcept
inline auto end() noexcept
inline auto end() const noexcept
inline size_t size() const
inline this_t &resize(size_t new_size)
inline this_t &resize(size_t new_size, const VALUE_T &default_value)
inline VALUE_T &back()
inline const VALUE_T &back() const
inline VALUE_T &front()
inline const VALUE_T &front() const
inline void fill(const VALUE_T &val)
template<typename T>
inline void Fill(T &&value, size_t start, size_t count)
template<typename T>
inline void Fill(T &&value, size_t start = 0)
template<typename T>
inline this_t &Push(T &&value, size_t count = 1)
inline VALUE_T Pop()
template<typename T>
inline void Insert(size_t pos, T &&value, size_t count = 1)
template<typename T>
inline void Erase(size_t pos, size_t count = 1)

Private Types

using this_t = StaticVector<VALUE_T, MAX_SIZE>

Private Functions

inline void RawMove(size_t from_id, size_t to_id, size_t count)

Private Members

array<VALUE_T, MAX_SIZE> values = {}
size_t cur_size = 0