OpenMS
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
ExposedVector< VectorElement > Class Template Reference

#include <OpenMS/DATASTRUCTURES/ExposedVector.h>

Inheritance diagram for ExposedVector< VectorElement >:
[legend]
Collaboration diagram for ExposedVector< VectorElement >:
[legend]

Public Types

using VecMember = std::vector< VectorElement >
 
using value_type = typename VecMember::value_type
 
using iterator = typename VecMember::iterator
 
using const_iterator = typename VecMember::const_iterator
 
using reverse_iterator = typename VecMember::reverse_iterator
 
using const_reverse_iterator = typename VecMember::const_reverse_iterator
 
using size_type = typename VecMember::size_type
 
using pointer = typename VecMember::pointer
 
using reference = typename VecMember::reference
 
using const_reference = typename VecMember::const_reference
 
using difference_type = typename VecMember::difference_type
 

Public Member Functions

 ExposedVector ()=default
 
 ExposedVector (const size_t n)
 
 ExposedVector (const size_t n, const VectorElement &val)
 
template<class Iter >
 ExposedVector (Iter begin, Iter end)
 
 ExposedVector (const ExposedVector &rhs)=default
 Copy C'tor. More...
 
 ExposedVector (ExposedVector &&rhs) noexcept=default
 Move C'tor. More...
 
ExposedVectoroperator= (const ExposedVector &rhs)=default
 Assignment. More...
 
ExposedVectoroperator= (ExposedVector &&rhs) noexcept=default
 Move Assignment. More...
 
iterator begin () noexcept
 
iterator end () noexcept
 
const_iterator begin () const noexcept
 
const_iterator end () const noexcept
 
const_iterator cbegin () const noexcept
 
const_iterator cend () const noexcept
 
size_t size () const noexcept
 
void resize (const size_t new_size)
 
void reserve (const size_t new_size)
 
bool empty () const noexcept
 
VectorElement & operator[] (size_t i) noexcept
 
const VectorElement & operator[] (size_t i) const noexcept
 
VectorElement & at (size_t i)
 
const VectorElement & at (size_t i) const
 
VectorElement & back () noexcept
 
const VectorElement & back () const noexcept
 
void push_back (const VectorElement &f)
 
void push_back (VectorElement &&f)
 
template<typename... Args>
decltype(auto) emplace_back (Args &&... args)
 
void pop_back () noexcept
 
iterator erase (const_iterator where) noexcept
 
iterator erase (const_iterator from, const_iterator to) noexcept
 
template<typename T >
iterator insert (const_iterator where, T from, T to)
 
void clear () noexcept
 Clear all elements. More...
 
reverse_iterator rbegin () noexcept
 Get reverse iterator to beginning. More...
 
const_reverse_iterator rbegin () const noexcept
 Get const reverse iterator to beginning. More...
 
reverse_iterator rend () noexcept
 Get reverse iterator to end. More...
 
const_reverse_iterator rend () const noexcept
 Get const reverse iterator to end. More...
 
const_reverse_iterator crbegin () const noexcept
 Get const reverse iterator to beginning. More...
 
const_reverse_iterator crend () const noexcept
 Get const reverse iterator to end. More...
 
void swap (ExposedVector &other) noexcept
 Swap contents with another ExposedVector. More...
 
template<typename InputIt >
void assign (InputIt first, InputIt last)
 Assign values from iterators. More...
 
void assign (size_type count, const VectorElement &value)
 Assign n copies of value. More...
 
void assign (std::initializer_list< VectorElement > init)
 Assign from initializer list. More...
 
VectorElement & front () noexcept
 Get first element. More...
 
const VectorElement & front () const noexcept
 Get first element (const) More...
 
size_type max_size () const noexcept
 Get maximum possible size. More...
 
size_type capacity () const noexcept
 Get current capacity. More...
 
void shrink_to_fit ()
 Shrink capacity to fit size. More...
 
iterator insert (const_iterator pos, const VectorElement &value)
 Insert single element. More...
 
iterator insert (const_iterator pos, VectorElement &&value)
 Insert single element (move) More...
 
iterator insert (const_iterator pos, size_type count, const VectorElement &value)
 Insert n copies of value. More...
 
iterator insert (const_iterator pos, std::initializer_list< VectorElement > init)
 Insert from initializer list. More...
 
template<typename... Args>
iterator emplace (const_iterator pos, Args &&... args)
 Emplace element at position. More...
 
const VecMembergetData () const
 read-only access to the underlying data More...
 
VecMembergetData ()
 read access to the underlying data More...
 
bool operator== (const ExposedVector &other) const
 Equality comparison. More...
 
bool operator!= (const ExposedVector &other) const
 Inequality comparison. More...
 
bool operator< (const ExposedVector &other) const requires LessThanComparable< VectorElement >
 
bool operator<= (const ExposedVector &other) const requires LessThanComparable< VectorElement >
 
bool operator> (const ExposedVector &other) const requires LessThanComparable< VectorElement >
 
bool operator>= (const ExposedVector &other) const requires LessThanComparable< VectorElement >
 

Protected Attributes

VecMember data_
 the container which holds all the data More...
 

Detailed Description

template<class VectorElement>
class OpenMS::ExposedVector< VectorElement >

@brief Makes a vector<VectorElement> available in the derived class and exposed commonly
       used vector member functions at class level.

This saves writing repetitive code which forwards commonly used functions of a data member, e.g. 'data_.begin()' 
as a member function of the class. Also it makes private inheritance from vector<VectorElement> obsolete.
The latter is problematic for many reasons (read up on 'prefer composition over inheritance'). In our case, even linking
can be problematic with private inheritance once you require RTTI (which some tools do, e.g. softwipe).

To fully utilize this class (i.e. access the 'iterator' type), insert
#define EXPOSED_VECTOR_INTERFACE(InnerElement)
Macro to expose common dependent types, such as iterator in the derived class.
Definition: ExposedVector.h:26

in your derived class, where VectorElement is identical to the template argument of ExposedVector, e.g. 'Feature' for FeatureMap.

Member Typedef Documentation

◆ const_iterator

using const_iterator = typename VecMember::const_iterator

◆ const_reference

using const_reference = typename VecMember::const_reference

◆ const_reverse_iterator

using const_reverse_iterator = typename VecMember::const_reverse_iterator

◆ difference_type

using difference_type = typename VecMember::difference_type

◆ iterator

using iterator = typename VecMember::iterator

◆ pointer

using pointer = typename VecMember::pointer

◆ reference

using reference = typename VecMember::reference

◆ reverse_iterator

using reverse_iterator = typename VecMember::reverse_iterator

◆ size_type

using size_type = typename VecMember::size_type

◆ value_type

using value_type = typename VecMember::value_type

◆ VecMember

using VecMember = std::vector<VectorElement>

Constructor & Destructor Documentation

◆ ExposedVector() [1/6]

ExposedVector ( )
default

◆ ExposedVector() [2/6]

ExposedVector ( const size_t  n)
inlineexplicit

◆ ExposedVector() [3/6]

ExposedVector ( const size_t  n,
const VectorElement &  val 
)
inline

◆ ExposedVector() [4/6]

ExposedVector ( Iter  begin,
Iter  end 
)
inline

◆ ExposedVector() [5/6]

ExposedVector ( const ExposedVector< VectorElement > &  rhs)
default

Copy C'tor.

◆ ExposedVector() [6/6]

ExposedVector ( ExposedVector< VectorElement > &&  rhs)
defaultnoexcept

Move C'tor.

Member Function Documentation

◆ assign() [1/3]

void assign ( InputIt  first,
InputIt  last 
)
inline

Assign values from iterators.

References ExposedVector< VectorElement >::data_.

◆ assign() [2/3]

void assign ( size_type  count,
const VectorElement &  value 
)
inline

Assign n copies of value.

References ExposedVector< VectorElement >::data_.

◆ assign() [3/3]

void assign ( std::initializer_list< VectorElement >  init)
inline

Assign from initializer list.

References ExposedVector< VectorElement >::data_.

◆ at() [1/2]

VectorElement& at ( size_t  i)
inline

◆ at() [2/2]

const VectorElement& at ( size_t  i) const
inline

◆ back() [1/2]

const VectorElement& back ( ) const
inlinenoexcept

◆ back() [2/2]

VectorElement& back ( )
inlinenoexcept

◆ begin() [1/2]

const_iterator begin ( ) const
inlinenoexcept

◆ begin() [2/2]

◆ capacity()

size_type capacity ( ) const
inlinenoexcept

Get current capacity.

References ExposedVector< VectorElement >::data_.

◆ cbegin()

const_iterator cbegin ( ) const
inlinenoexcept

◆ cend()

const_iterator cend ( ) const
inlinenoexcept

◆ clear()

void clear ( )
inlinenoexcept

Clear all elements.

References ExposedVector< VectorElement >::data_.

◆ crbegin()

const_reverse_iterator crbegin ( ) const
inlinenoexcept

Get const reverse iterator to beginning.

References ExposedVector< VectorElement >::data_.

◆ crend()

const_reverse_iterator crend ( ) const
inlinenoexcept

Get const reverse iterator to end.

References ExposedVector< VectorElement >::data_.

◆ emplace()

iterator emplace ( const_iterator  pos,
Args &&...  args 
)
inline

Emplace element at position.

References ExposedVector< VectorElement >::data_.

◆ emplace_back()

decltype(auto) emplace_back ( Args &&...  args)
inline

◆ empty()

◆ end() [1/2]

const_iterator end ( ) const
inlinenoexcept

◆ end() [2/2]

◆ erase() [1/2]

iterator erase ( const_iterator  from,
const_iterator  to 
)
inlinenoexcept

◆ erase() [2/2]

iterator erase ( const_iterator  where)
inlinenoexcept

◆ front() [1/2]

const VectorElement& front ( ) const
inlinenoexcept

Get first element (const)

References ExposedVector< VectorElement >::data_.

◆ front() [2/2]

VectorElement& front ( )
inlinenoexcept

◆ getData() [1/2]

VecMember& getData ( )
inline

read access to the underlying data

References ExposedVector< VectorElement >::data_.

◆ getData() [2/2]

◆ insert() [1/5]

iterator insert ( const_iterator  pos,
const VectorElement &  value 
)
inline

Insert single element.

References ExposedVector< VectorElement >::data_.

◆ insert() [2/5]

iterator insert ( const_iterator  pos,
size_type  count,
const VectorElement &  value 
)
inline

Insert n copies of value.

References ExposedVector< VectorElement >::data_.

◆ insert() [3/5]

iterator insert ( const_iterator  pos,
std::initializer_list< VectorElement >  init 
)
inline

Insert from initializer list.

References ExposedVector< VectorElement >::data_.

◆ insert() [4/5]

iterator insert ( const_iterator  pos,
VectorElement &&  value 
)
inline

Insert single element (move)

References ExposedVector< VectorElement >::data_.

◆ insert() [5/5]

iterator insert ( const_iterator  where,
from,
to 
)
inline

◆ max_size()

size_type max_size ( ) const
inlinenoexcept

Get maximum possible size.

References ExposedVector< VectorElement >::data_.

◆ operator!=()

bool operator!= ( const ExposedVector< VectorElement > &  other) const
inline

Inequality comparison.

References ExposedVector< VectorElement >::data_.

◆ operator<()

bool operator< ( const ExposedVector< VectorElement > &  other) const
inline

◆ operator<=()

bool operator<= ( const ExposedVector< VectorElement > &  other) const
inline

◆ operator=() [1/2]

ExposedVector& operator= ( const ExposedVector< VectorElement > &  rhs)
default

Assignment.

◆ operator=() [2/2]

ExposedVector& operator= ( ExposedVector< VectorElement > &&  rhs)
defaultnoexcept

Move Assignment.

◆ operator==()

bool operator== ( const ExposedVector< VectorElement > &  other) const
inline

Equality comparison.

References ExposedVector< VectorElement >::data_.

◆ operator>()

bool operator> ( const ExposedVector< VectorElement > &  other) const
inline

◆ operator>=()

bool operator>= ( const ExposedVector< VectorElement > &  other) const
inline

◆ operator[]() [1/2]

const VectorElement& operator[] ( size_t  i) const
inlinenoexcept

◆ operator[]() [2/2]

VectorElement& operator[] ( size_t  i)
inlinenoexcept

◆ pop_back()

void pop_back ( )
inlinenoexcept

◆ push_back() [1/2]

void push_back ( const VectorElement &  f)
inline

◆ push_back() [2/2]

void push_back ( VectorElement &&  f)
inline

◆ rbegin() [1/2]

const_reverse_iterator rbegin ( ) const
inlinenoexcept

Get const reverse iterator to beginning.

References ExposedVector< VectorElement >::data_.

◆ rbegin() [2/2]

reverse_iterator rbegin ( )
inlinenoexcept

Get reverse iterator to beginning.

References ExposedVector< VectorElement >::data_.

◆ rend() [1/2]

const_reverse_iterator rend ( ) const
inlinenoexcept

Get const reverse iterator to end.

References ExposedVector< VectorElement >::data_.

◆ rend() [2/2]

reverse_iterator rend ( )
inlinenoexcept

Get reverse iterator to end.

References ExposedVector< VectorElement >::data_.

◆ reserve()

void reserve ( const size_t  new_size)
inline

◆ resize()

void resize ( const size_t  new_size)
inline

◆ shrink_to_fit()

void shrink_to_fit ( )
inline

Shrink capacity to fit size.

References ExposedVector< VectorElement >::data_.

◆ size()

◆ swap()

void swap ( ExposedVector< VectorElement > &  other)
inlinenoexcept

Swap contents with another ExposedVector.

References ExposedVector< VectorElement >::data_.

Referenced by TOPPViewBase::addDataFile().

Member Data Documentation

◆ data_

VecMember data_
protected

the container which holds all the data

Referenced by ExposedVector< VectorElement >::assign(), ExposedVector< VectorElement >::at(), ExposedVector< VectorElement >::back(), ExposedVector< VectorElement >::begin(), ExposedVector< VectorElement >::capacity(), ExposedVector< VectorElement >::cbegin(), ExposedVector< VectorElement >::cend(), ExposedVector< VectorElement >::clear(), ExposedVector< VectorElement >::crbegin(), ExposedVector< VectorElement >::crend(), ExposedVector< VectorElement >::emplace(), ExposedVector< VectorElement >::emplace_back(), ExposedVector< VectorElement >::empty(), ExposedVector< VectorElement >::end(), ExposedVector< VectorElement >::erase(), ExposedVector< VectorElement >::front(), ExposedVector< VectorElement >::getData(), ExposedVector< VectorElement >::insert(), ExposedVector< VectorElement >::max_size(), ExposedVector< VectorElement >::operator!=(), ExposedVector< VectorElement >::operator<(), ExposedVector< VectorElement >::operator<=(), ExposedVector< VectorElement >::operator==(), ExposedVector< VectorElement >::operator>(), ExposedVector< VectorElement >::operator>=(), ExposedVector< VectorElement >::operator[](), ExposedVector< VectorElement >::pop_back(), ExposedVector< VectorElement >::push_back(), ExposedVector< VectorElement >::rbegin(), ExposedVector< VectorElement >::rend(), ExposedVector< VectorElement >::reserve(), ExposedVector< VectorElement >::resize(), ExposedVector< VectorElement >::shrink_to_fit(), ExposedVector< VectorElement >::size(), and ExposedVector< VectorElement >::swap().