25#ifndef __BITPIT_FLAT_VECTOR_2D_HPP__
26#define __BITPIT_FLAT_VECTOR_2D_HPP__
33#include "binary_stream.hpp"
69 FlatVector2D(
const std::vector<std::size_t> &sizes,
const T &value = T());
71 FlatVector2D(std::size_t nVectors,
const std::size_t *sizes,
const T &value);
72 FlatVector2D(std::size_t nVectors,
const std::size_t *sizes,
const T *values);
73 FlatVector2D(
const std::vector<std::vector<T> > &vector2D);
95 void initialize(
const std::vector<std::size_t> &sizes,
const T &value = T());
96 void initialize(std::size_t nVectors, std::size_t
size,
const T &value = T());
97 void initialize(std::size_t nVectors,
const std::size_t *sizes,
const T &value);
98 void initialize(std::size_t nVectors,
const std::size_t *sizes,
const T *values);
99 void initialize(
const std::vector<std::vector<T> > &vector2D);
103 void reserve(std::size_t nVectors, std::size_t nItems = 0);
109 void clear(
bool release =
true);
113 const std::size_t *
indices() const noexcept;
114 const std::
size_t *
indices(std::
size_t i) const noexcept;
117 const T *
data() const noexcept;
121 void pushBack(std::
size_t subArraySize, const T &value = T());
123 void pushBack(std::
size_t subArraySize, const T *subArray);
133 void erase(std::
size_t i);
134 void eraseItem(std::
size_t i, std::
size_t j);
136 void setItem(std::
size_t i, std::
size_t j, const T &value);
137 void setItem(std::
size_t i, std::
size_t j, T &&value);
138 T &
getItem(std::
size_t i, std::
size_t j);
139 const T &
getItem(std::
size_t i, std::
size_t j) const;
140 const T *
get(std::
size_t i) const;
141 T *
get(std::
size_t i);
143 void rawSetItem(std::
size_t k, const T &value);
151 std::
size_t size() const;
164 std::
vector<std::
size_t> m_index;
166 const T* operator[](std::
size_t i) const;
167 T* operator[](std::
size_t i);
168 bool isIndexValid(std::
size_t i) const;
169 bool isIndexValid(std::
size_t i, std::
size_t j) const;
171 void initialize(std::
size_t nVectors, const std::
size_t *sizes, std::
size_t sizesStride, const T *values, std::
size_t valuesStride);
173 void destroy(
bool destroyIndex,
bool destroyValues);
180#include "flatVector2D.tpp"
Metafunction for generation of a flattened vector of vectors.
const std::size_t * indices() const noexcept
bool isInitialized() const
void clearItems(bool release=true)
T & getItem(std::size_t i, std::size_t j)
bool operator==(const FlatVector2D &rhs) const
FlatVector2D & operator=(FlatVector2D &&other)=default
void swap(FlatVector2D &other) noexcept
T & rawGetItem(std::size_t k)
const std::vector< T > & vector() const
std::size_t getItemCapacity() const
FlatVector2D(bool initialize=true)
void rawSetItem(std::size_t k, const T &value)
void clear(bool release=true)
void reserve(std::size_t nVectors, std::size_t nItems=0)
std::size_t getItemCount() const
void initialize(const std::vector< std::size_t > &sizes, const T &value=T())
void eraseItem(std::size_t i, std::size_t j)
void erase(std::size_t i)
const T * get(std::size_t i) const
std::size_t capacity() const
std::size_t getBinarySize() const
void setItem(std::size_t i, std::size_t j, const T &value)
void pushBackItem(const T &value)
FlatVector2D & operator=(const FlatVector2D &other)=default
std::ostream & operator<<(std::ostream &, const std::vector< T > &)