LocARNA-2.0.0
Classes | Public Types | Public Member Functions | Protected Attributes | List of all members
LocARNA::SparseVectorBase< Derived, ValueType, KeyType > Class Template Reference

Base class template for sparse vector and matrix. More...

#include <sparse_vector_base.hh>

Inheritance diagram for LocARNA::SparseVectorBase< Derived, ValueType, KeyType >:
Inheritance graph
[legend]
Collaboration diagram for LocARNA::SparseVectorBase< Derived, ValueType, KeyType >:
Collaboration graph
[legend]

Classes

class  element_proxy
 Proxy for element of sparse vector. More...
 

Public Types

using derived_type = Derived
 
using value_type = ValueType
 type of vector entries
 
using key_type = KeyType
 type of vector index
 
using map_type = std::unordered_map< KeyType, ValueType >
 
using size_type = size_t
 usual definition of size_type
 
using const_iterator = typename map_type::const_iterator
 Stl-compatible constant iterator over vector elements. More...
 
using iterator = typename map_type::iterator
 

Public Member Functions

 SparseVectorBase (const value_type def)
 
element_proxy operator[] (const key_type &i)
 Access to vector element. More...
 
const value_typeoperator[] (const key_type &i) const
 Read-only access to vector element of const vector. More...
 
void set (const key_type &i, const value_type &val)
 Write access to vector entry. More...
 
value_typeref (const key_type &i)
 Write access to element. More...
 
void reset (const key_type &i)
 Set vector entry to default value. More...
 
size_type size () const
 Size of sparse vector. More...
 
bool empty () const
 Check for emptiness. More...
 
void clear ()
 Clear the vector.
 
const_iterator begin () const
 Begin const iterator over vector entries. More...
 
const_iterator end () const
 End const iterator over vector entries. More...
 
const value_typedef () const
 Default value. More...
 

Protected Attributes

value_type def_
 default value of vector entries
 
map_type the_map_
 internal representation of sparse vector
 

Detailed Description

template<typename Derived, typename ValueType, typename KeyType = size_t>
class LocARNA::SparseVectorBase< Derived, ValueType, KeyType >

Base class template for sparse vector and matrix.

the first template argument is the derived sparse vector or matrix class (curiously recurring template pattern)

Member Typedef Documentation

◆ const_iterator

template<typename Derived , typename ValueType , typename KeyType = size_t>
using LocARNA::SparseVectorBase< Derived, ValueType, KeyType >::const_iterator = typename map_type::const_iterator

Stl-compatible constant iterator over vector elements.

Behaves like a const iterator of the hash map.

Member Function Documentation

◆ begin()

template<typename Derived , typename ValueType , typename KeyType = size_t>
const_iterator LocARNA::SparseVectorBase< Derived, ValueType, KeyType >::begin ( ) const
inline

Begin const iterator over vector entries.

Returns
const iterator pointing to begin of entry hash
See also
end()

◆ def()

template<typename Derived , typename ValueType , typename KeyType = size_t>
const value_type& LocARNA::SparseVectorBase< Derived, ValueType, KeyType >::def ( ) const
inline

Default value.

Returns
default value

◆ empty()

template<typename Derived , typename ValueType , typename KeyType = size_t>
bool LocARNA::SparseVectorBase< Derived, ValueType, KeyType >::empty ( ) const
inline

Check for emptiness.

Returns
true, if sparse vector contains only implicite default entries.

◆ end()

template<typename Derived , typename ValueType , typename KeyType = size_t>
const_iterator LocARNA::SparseVectorBase< Derived, ValueType, KeyType >::end ( ) const
inline

End const iterator over vector entries.

Returns
const iterator pointing after end of entry hash
See also
begin()

◆ operator[]() [1/2]

template<typename Derived , typename ValueType , typename KeyType = size_t>
element_proxy LocARNA::SparseVectorBase< Derived, ValueType, KeyType >::operator[] ( const key_type i)
inline

Access to vector element.

Parameters
iindex first dimension
Returns
proxy to vector entry i

◆ operator[]() [2/2]

template<typename Derived , typename ValueType , typename KeyType = size_t>
const value_type& LocARNA::SparseVectorBase< Derived, ValueType, KeyType >::operator[] ( const key_type i) const
inline

Read-only access to vector element of const vector.

Parameters
iindex first dimension
Returns
vector entry i

◆ ref()

template<typename Derived , typename ValueType , typename KeyType = size_t>
value_type& LocARNA::SparseVectorBase< Derived, ValueType, KeyType >::ref ( const key_type i)
inline

Write access to element.

Parameters
iindex
Note
Creates the entry if it is not represented yet.
Returns
reference to entry i

◆ reset()

template<typename Derived , typename ValueType , typename KeyType = size_t>
void LocARNA::SparseVectorBase< Derived, ValueType, KeyType >::reset ( const key_type i)
inline

Set vector entry to default value.

Parameters
iindex first dimension

◆ set()

template<typename Derived , typename ValueType , typename KeyType = size_t>
void LocARNA::SparseVectorBase< Derived, ValueType, KeyType >::set ( const key_type i,
const value_type val 
)
inline

Write access to vector entry.

Parameters
iindex first dimension
valvalue to be written to entry i
Note
Unlike the assignment operator (via element_proxy), there is no test whether the default value is assigned. Use reset(i) if you want to reset vector entries to the default.
Postcondition
writes entry. If entry didn't exist already it is created.

◆ size()

template<typename Derived , typename ValueType , typename KeyType = size_t>
size_type LocARNA::SparseVectorBase< Derived, ValueType, KeyType >::size ( ) const
inline

Size of sparse vector.

Returns
number of non-empty entries

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