diff options
author | 2016-01-25 11:55:39 +0100 | |
---|---|---|
committer | 2016-01-25 11:55:39 +0100 | |
commit | 869b4443ac4a55c09a0632e2dbf621587749e164 (patch) | |
tree | febda9b7f7ee64f26a2e8238099fc9c5530d4dc4 /Eigen | |
parent | e3a15a03a4fe758ed0a00f3a2b083d7ca58ca16b (diff) |
Add SparseVector::conservativeResize() method.
Diffstat (limited to 'Eigen')
-rw-r--r-- | Eigen/src/SparseCore/SparseVector.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/Eigen/src/SparseCore/SparseVector.h b/Eigen/src/SparseCore/SparseVector.h index 7ec73a365..4db3003d2 100644 --- a/Eigen/src/SparseCore/SparseVector.h +++ b/Eigen/src/SparseCore/SparseVector.h @@ -222,6 +222,24 @@ class SparseVector m_data.clear(); } + /** Resizes the sparse vector to \a newSize, while leaving old values untouched. + * + * If the size of the vector is decreased, then the storage of the out-of bounds coefficients is kept and reserved. + * Call .data().squeeze() to free extra memory. + * + * \sa reserve(), setZero() + */ + void conservativeResize(Index newSize) + { + if (newSize < m_size) + { + Index i = 0; + while (i<m_data.size() && m_data.index(i)<newSize) ++i; + m_data.resize(i); + } + m_size = newSize; + } + void resizeNonZeros(Index size) { m_data.resize(size); } inline SparseVector() : m_size(0) { check_template_parameters(); resize(0); } |