From 2ce65f4cf8c4b026e7cc5508be766efc0d50033c Mon Sep 17 00:00:00 2001 From: Richard Roberts Date: Tue, 9 Jul 2013 17:50:45 +0000 Subject: [PATCH] VectorValuesUnordered::Zero --- gtsam/linear/VectorValuesUnordered.cpp | 9 +++++++++ gtsam/linear/VectorValuesUnordered.h | 3 +++ 2 files changed, 12 insertions(+) diff --git a/gtsam/linear/VectorValuesUnordered.cpp b/gtsam/linear/VectorValuesUnordered.cpp index dc252afca..9c2a3182b 100644 --- a/gtsam/linear/VectorValuesUnordered.cpp +++ b/gtsam/linear/VectorValuesUnordered.cpp @@ -55,6 +55,15 @@ namespace gtsam { throw std::invalid_argument("Requested to merge two VectorValues that have one or more variables in common."); } + /* ************************************************************************* */ + VectorValuesUnordered VectorValuesUnordered::Zero(const VectorValuesUnordered& other) + { + VectorValuesUnordered result; + BOOST_FOREACH(const KeyValuePair& v, other) + result.values_.insert(make_pair(v.first, Vector::Zero(v.second.size()))); + return result; + } + /* ************************************************************************* */ void VectorValuesUnordered::insert(const VectorValuesUnordered& values) { diff --git a/gtsam/linear/VectorValuesUnordered.h b/gtsam/linear/VectorValuesUnordered.h index 2db9c1898..0834a4d69 100644 --- a/gtsam/linear/VectorValuesUnordered.h +++ b/gtsam/linear/VectorValuesUnordered.h @@ -110,6 +110,9 @@ namespace gtsam { /** Merge two VectorValues into one, this is more efficient than inserting elements one by one. */ VectorValuesUnordered(const VectorValuesUnordered& first, const VectorValuesUnordered& second); + /** Create a VectorValues with the same structure as \c other, but filled with zeros. */ + static VectorValuesUnordered Zero(const VectorValuesUnordered& other); + /// @} /// @name Standard Interface /// @{