1 #ifndef SPARSE_VECTOR_BASE_HH
2 #define SPARSE_VECTOR_BASE_HH
9 #include <unordered_map>
22 template <
typename Derived,
typename ValueType,
typename KeyType=
size_t>
25 using derived_type = Derived;
28 using map_type = std::unordered_map<KeyType, ValueType>;
39 using iterator =
typename map_type::iterator;
69 typename map_type::const_iterator it = v_->the_map_.find(k_);
70 if (it == v_->the_map_.end())
90 if (it == v_->the_map_.end())
91 v_->the_map_[k_] = v_->def_ + x;
93 v_->the_map_[k_] += x;
113 v_->the_map_.erase(k_);
118 typename map_type::iterator it = v_->the_map_.find(k_);
119 if (it != v_->the_map_.end()) {
122 v_->the_map_.insert(
typename map_type::value_type(k_, x));
Proxy for element of sparse vector.
Definition: sparse_vector_base.hh:49
element_proxy(derived_type *v, key_type k)
Construct as proxy for specified element in given sparse vector.
Definition: sparse_vector_base.hh:59
element_proxy operator+=(const value_type &x)
Operator for in place addition.
Definition: sparse_vector_base.hh:88
element_proxy & operator=(const value_type &x)
Assignment operator.
Definition: sparse_vector_base.hh:111
Base class template for sparse vector and matrix.
Definition: sparse_vector_base.hh:23
map_type the_map_
internal representation of sparse vector
Definition: sparse_vector_base.hh:278
size_t size_type
usual definition of size_type
Definition: sparse_vector_base.hh:30
const value_type & def() const
Default value.
Definition: sparse_vector_base.hh:272
value_type def_
default value of vector entries
Definition: sparse_vector_base.hh:277
value_type & ref(const key_type &i)
Write access to element.
Definition: sparse_vector_base.hh:194
element_proxy operator[](const key_type &i)
Access to vector element.
Definition: sparse_vector_base.hh:143
KeyType key_type
type of vector index
Definition: sparse_vector_base.hh:27
void set(const key_type &i, const value_type &val)
Write access to vector entry.
Definition: sparse_vector_base.hh:175
const_iterator begin() const
Begin const iterator over vector entries.
Definition: sparse_vector_base.hh:251
ValueType value_type
type of vector entries
Definition: sparse_vector_base.hh:26
const value_type & operator[](const key_type &i) const
Read-only access to vector element of const vector.
Definition: sparse_vector_base.hh:154
void clear()
Clear the vector.
Definition: sparse_vector_base.hh:239
const_iterator end() const
End const iterator over vector entries.
Definition: sparse_vector_base.hh:262
typename map_type::const_iterator const_iterator
Stl-compatible constant iterator over vector elements.
Definition: sparse_vector_base.hh:37
bool empty() const
Check for emptiness.
Definition: sparse_vector_base.hh:231
size_type size() const
Size of sparse vector.
Definition: sparse_vector_base.hh:221
void reset(const key_type &i)
Set vector entry to default value.
Definition: sparse_vector_base.hh:209
Definition: aligner.cc:15
size_t size_type
general size type
Definition: aux.hh:120