Polymake Template Library (PTL): pm::SparseVector< E > Class Template Reference
Polymake Template Library (PTL)  4.2
pm::SparseVector< E > Class Template Reference
Collaboration diagram for pm::SparseVector< E >:

Public Member Functions

Int dim () const
 tell the current vector dimension, i.e., the number of non-zero elements (may differ from size)
 
 SparseVector ()
 create as empty
 
 SparseVector (Int dim_arg)
 create vector of length n, (implicitly) initialize all elements with 0
 
template<typename Iterator , bool enabled = construct_sparse_iterator<Iterator, E>::enabled>
 SparseVector (Int dim_arg, Iterator &&src)
 
 SparseVector (const GenericVector< SparseVector > &v)
 Copy of a disguised SparseVector object.
 
template<typename Vector2 >
 SparseVector (const GenericVector< Vector2, E > &v)
 Create a vector as a copy of another vector of the same element type.
 
template<typename Vector2 , typename E2 >
 SparseVector (const GenericVector< Vector2, E2 > &v, std::enable_if_t< can_initialize< E2, E >::value, std::nullptr_t >=nullptr)
 Create a vector as a copy of another vector with a different element type.
 
template<typename E2 , typename = std::enable_if_t<can_initialize<E2, E>::value>>
 SparseVector (std::initializer_list< E2 > l)
 
 SparseVector (Int d, std::initializer_list< std::pair< Int, E >> l)
 
void clear ()
 truncate to zero size
 
void resize (Int n)
 change the size, initialize appended elements with default constructor
 
reference operator[] (Int i)
 random access, may cost O(log(n)) time; Performance Comparison of Vector Classes
 
const E & operator[] (Int i) const
 constant random access, may cost O(log(n)) time; Performance Comparison of Vector Classes
 
template<typename Vector2 , typename E2 , typename = std::enable_if_t<can_initialize<E2, E>::value>>
SparseVectoroperator|= (const GenericVector< Vector2, E2 > &v)
 append a GenericVector
 
template<typename E2 , typename = std::enable_if_t<can_initialize<E2, E>::value>>
SparseVectoroperator|= (E2 &&r)
 append an element
 
template<typename E2 , typename = std::enable_if_t<can_initialize<E2, E>::value>>
SparseVectoroperator|= (std::initializer_list< E2 > l)
 

Detailed Description

template<typename E>
class pm::SparseVector< E >

Vector type class which is an associative container with element indices (coordinates) as keys; elements equal to the default value (ElementType(), which is 0 for most numerical types) are not stored, but implicitly encoded by the gaps in the key set. It is based on an AVL tree.

Constructor & Destructor Documentation

◆ SparseVector() [1/3]

template<typename E >
template<typename Iterator , bool enabled = construct_sparse_iterator<Iterator, E>::enabled>
pm::SparseVector< E >::SparseVector ( Int  dim_arg,
Iterator &&  src 
)
inline

Create a vector of dimension n, initialize the elements from a data sequence. Iterator can be either indexed, or supply index-value pairs, e.g. std::pair<Int, ElementType> or a plain sequence of data items. In the latter case zero elements are filtered out.

◆ SparseVector() [2/3]

template<typename E >
template<typename E2 , typename = std::enable_if_t<can_initialize<E2, E>::value>>
pm::SparseVector< E >::SparseVector ( std::initializer_list< E2 >  l)
inline

Create a vector from a list of values. Zeroes are filtered out automatically.

◆ SparseVector() [3/3]

template<typename E >
pm::SparseVector< E >::SparseVector ( Int  d,
std::initializer_list< std::pair< Int, E >>  l 
)
inline

Create a vector from a list of (index, value) pairs. Parameter d specifies the dimension. Indices don't have to come in ascending order; zero values are not detected.

Member Function Documentation

◆ operator|=()

template<typename E >
template<typename E2 , typename = std::enable_if_t<can_initialize<E2, E>::value>>
SparseVector& pm::SparseVector< E >::operator|= ( std::initializer_list< E2 >  l)
inline

append a list of elements zeroes are filtered out automatically


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