Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
bb::RefVector< T > Class Template Reference

A template class for a reference vector. Behaves as if std::vector<T&> was possible. More...

#include <ref_vector.hpp>

Classes

class  iterator
 Nested iterator class for RefVector, based on indexing into the pointer vector. Provides semantics similar to what would be expected if std::vector<T&, N> was possible. More...
 

Public Member Functions

 RefVector ()=default
 
 RefVector (const std::vector< T * > &ptr_vector)
 
 RefVector (std::vector< T > &vector)
 
template<typename... Ts>
 RefVector (T &first, Ts &... refs)
 
template<std::size_t N>
 RefVector (const RefArray< T, N > &ref_array)
 
T & operator[] (std::size_t idx) const
 
std::size_t size () const
 
void push_back (T &element)
 
iterator begin () const
 
iterator end () const
 
template<typename ConvertibleFromT >
 operator std::vector< ConvertibleFromT > () const
 
std::vector< T * > & get_storage ()
 
const std::vector< T * > & get_storage () const
 

Private Attributes

std::vector< T * > storage
 

Detailed Description

template<typename T>
class bb::RefVector< T >

A template class for a reference vector. Behaves as if std::vector<T&> was possible.

This class provides a dynamic-size vector of pointers to elements of type T, exposed as references. It offers random access to its elements and provides an iterator class for traversal.

Template Parameters
TThe type of elements stored in the vector.
Warning
This should NOT be used for long-term storage, only for efficient passing. Any long-term sharing of values should use shared pointers.

Definition at line 23 of file ref_vector.hpp.

Constructor & Destructor Documentation

◆ RefVector() [1/5]

template<typename T >
bb::RefVector< T >::RefVector ( )
default

◆ RefVector() [2/5]

template<typename T >
bb::RefVector< T >::RefVector ( const std::vector< T * > &  ptr_vector)
inlineexplicit

Definition at line 26 of file ref_vector.hpp.

◆ RefVector() [3/5]

template<typename T >
bb::RefVector< T >::RefVector ( std::vector< T > &  vector)
inlineexplicit

Definition at line 30 of file ref_vector.hpp.

◆ RefVector() [4/5]

template<typename T >
template<typename... Ts>
bb::RefVector< T >::RefVector ( T &  first,
Ts &...  refs 
)
inline

Definition at line 39 of file ref_vector.hpp.

◆ RefVector() [5/5]

template<typename T >
template<std::size_t N>
bb::RefVector< T >::RefVector ( const RefArray< T, N > &  ref_array)
inline

Definition at line 44 of file ref_vector.hpp.

Member Function Documentation

◆ begin()

template<typename T >
iterator bb::RefVector< T >::begin ( ) const
inline

Definition at line 101 of file ref_vector.hpp.

◆ end()

template<typename T >
iterator bb::RefVector< T >::end ( ) const
inline

Definition at line 102 of file ref_vector.hpp.

◆ get_storage() [1/2]

template<typename T >
std::vector< T * > & bb::RefVector< T >::get_storage ( )
inline

Definition at line 113 of file ref_vector.hpp.

◆ get_storage() [2/2]

template<typename T >
const std::vector< T * > & bb::RefVector< T >::get_storage ( ) const
inline

Definition at line 114 of file ref_vector.hpp.

◆ operator std::vector< ConvertibleFromT >()

template<typename T >
template<typename ConvertibleFromT >
bb::RefVector< T >::operator std::vector< ConvertibleFromT > ( ) const
inline

Definition at line 104 of file ref_vector.hpp.

◆ operator[]()

template<typename T >
T & bb::RefVector< T >::operator[] ( std::size_t  idx) const
inline

Definition at line 52 of file ref_vector.hpp.

◆ push_back()

template<typename T >
void bb::RefVector< T >::push_back ( T &  element)
inline

Definition at line 100 of file ref_vector.hpp.

◆ size()

template<typename T >
std::size_t bb::RefVector< T >::size ( ) const
inline

Definition at line 98 of file ref_vector.hpp.

Member Data Documentation

◆ storage

template<typename T >
std::vector<T*> bb::RefVector< T >::storage
private

Definition at line 117 of file ref_vector.hpp.


The documentation for this class was generated from the following file: