diff options
Diffstat (limited to 'decoder/sparse_vector.h')
-rw-r--r-- | decoder/sparse_vector.h | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/decoder/sparse_vector.h b/decoder/sparse_vector.h index 66c9b10d..896e8c43 100644 --- a/decoder/sparse_vector.h +++ b/decoder/sparse_vector.h @@ -187,17 +187,26 @@ public: return result /= x; } - std::ostream &operator<<(std::ostream &out) const { + std::ostream &operator<<(std::ostream& out) const { + Write(true, &out); + return out; + } + + void Write(const bool with_semi, std::ostream* os) const { bool first = true; for (typename MapType::const_iterator it = values_.begin(); it != values_.end(); ++it) { // by definition feature id 0 is a dummy value if (it->first == 0) continue; - out << (first ? "" : ";") - << FD::Convert(it->first) << '=' << it->second; + if (with_semi) { + (*os) << (first ? "" : ";") + << FD::Convert(it->first) << '=' << it->second; + } else { + (*os) << (first ? "" : " ") + << FD::Convert(it->first) << '=' << it->second; + } first = false; } - return out; } bool operator<(const SparseVector<T> &other) const { |