diff options
Diffstat (limited to 'decoder/sparse_vector.h')
-rw-r--r-- | decoder/sparse_vector.h | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/decoder/sparse_vector.h b/decoder/sparse_vector.h index 8fc0f520..207489c5 100644 --- a/decoder/sparse_vector.h +++ b/decoder/sparse_vector.h @@ -60,6 +60,11 @@ class SparseVector { SPARSE_VECTOR_MAP_RESERVED(values_,-1,-2); } public: + T const& get_singleton() const { + assert(values_.size()==1); + return values_.begin()->second; + } + typedef SparseVector<T> Self; typedef SPARSE_VECTOR_MAP<int, T> MapType; typedef typename MapType::const_iterator const_iterator; @@ -113,7 +118,7 @@ public: return values_[index]; } - void set_value(int index, const T &value) { + inline void set_value(int index, const T &value) { values_[index] = value; } @@ -236,6 +241,15 @@ public: values_.erase(found);*/ } + template <class T2> + void set_from(SparseVector<T2> const& other) { + for (typename MapType::const_iterator + it = other.values_.begin(); it != other.values_.end(); ++it) + { + values_[it->first]=it->second; + } + } + SparseVector<T> &operator+=(const SparseVector<T> &other) { for (typename MapType::const_iterator it = other.values_.begin(); it != other.values_.end(); ++it) |