84 std::vector< Sparse_Vector_Element<T, Subscript> > s_;
94 std::vector< Sparse_Vector_Element<T, Subscript> >::const_iterator
98 const_iterator begin()
const {
return s_.begin(); }
99 const_iterator end()
const {
return s_.end(); }
101 inline const T& value(Subscript i)
const {
return s_[i].value(); }
102 inline Subscript index(Subscript i)
const {
return s_[i].index(); }
104 inline T dot_product(
const Vector<T>& x)
const
108 for ( const_iterator p = begin(); p < end(); p++)
110 sum += p->value() * x[p->index()];
120 Sparse_Vector(Subscript N, Subscript nz,
const T* Val,
const Subscript *I):
129 void insert(
const T& val, Subscript i)
136 void insert(Subscript nz,
const T* Val,
const Subscript *I)
139 for (
int count=0; count<nz; count++)
141 insert(Val[count], I[count]);
146 void insert_base_one(
const T& val, Subscript i)
151 void insert_base_one(Subscript nz,
const T* Val,
const Subscript *I)
153 for (
int count=0; count<nz; count++)
155 insert(Val[count], I[count]-1);
161 inline int dim()
const {
return dim_;}
162 int num_nonzeros()
const {
return num_nonzeros_;}
167 inline double norm()
const
171 for (const_iterator p = begin(); p < end(); p++)
173 sum += p->value() * p->value();
179 std::ostream & print(std::ostream &s)
const
181 for (
typename Sparse_Vector<T>::const_iterator p = begin();
184 s <<
"( " << p->value() <<
", " << p->index() <<
" ) \n";
189 std::ostream & print_base_one(std::ostream &s)
const
191 for (
typename Sparse_Vector<T>::const_iterator p = begin();
194 s <<
"( " << p->value() <<
", " << p->index()+1 <<
" ) \n";