#ifndef SPARSE_VECTOR_H_ #define SPARSE_VECTOR_H_ #include "fast_sparse_vector.h" #define SparseVector FastSparseVector template SparseVector operator*(const SparseVector& a, const S& b) { SparseVector result = a; return result *= b; } template SparseVector operator*(const SparseVector& a, const double& b) { SparseVector result = a; return result *= b; } template SparseVector operator/(const SparseVector& a, const S& b) { SparseVector result = a; return result /= b; } template SparseVector operator/(const SparseVector& a, const double& b) { SparseVector result = a; return result /= b; } #include "fdict.h" template inline void print(O &o,const SparseVector& v, const char* kvsep="=",const char* pairsep=" ",const char* pre="",const char* post="") { o << pre; bool first=true; for (typename SparseVector::const_iterator i=v.begin(),e=v.end();i!=e;++i) { if (first) first=false; else o<first)<second; } o << post; } template inline std::ostream& operator<<(std::ostream& out, const SparseVector& v) { print(out, v); return out; } namespace B64 { void Encode(double objective, const SparseVector& v, std::ostream* out); // returns false if failed to decode bool Decode(double* objective, SparseVector* v, const char* data, size_t size); } #endif