diff --git a/gtsam/hybrid/HybridBayesNet.cpp b/gtsam/hybrid/HybridBayesNet.cpp index 5353fe2e0..dbf94ea59 100644 --- a/gtsam/hybrid/HybridBayesNet.cpp +++ b/gtsam/hybrid/HybridBayesNet.cpp @@ -65,6 +65,7 @@ HybridBayesNet HybridBayesNet::prune( } HybridBayesNet result; + result.reserve(size()); // Go through all the Gaussian conditionals, restrict them according to // fixed values, and then prune further. @@ -84,9 +85,9 @@ HybridBayesNet HybridBayesNet::prune( } // Type-erase and add to the pruned Bayes Net fragment. result.push_back(prunedHybridGaussianConditional); - } else if (auto gc = conditional->asGaussian()) { - // Add the non-HybridGaussianConditional conditional - result.push_back(gc); + } else if (conditional->isContinuous()) { + // Add the non-Hybrid GaussianConditional conditional + result.push_back(conditional); } else throw std::runtime_error( "HybrdiBayesNet::prune: Unknown HybridConditional type."); diff --git a/gtsam/hybrid/HybridFactor.cpp b/gtsam/hybrid/HybridFactor.cpp index 3338951bf..627da4fe6 100644 --- a/gtsam/hybrid/HybridFactor.cpp +++ b/gtsam/hybrid/HybridFactor.cpp @@ -23,6 +23,7 @@ namespace gtsam { KeyVector CollectKeys(const KeyVector &continuousKeys, const DiscreteKeys &discreteKeys) { KeyVector allKeys; + allKeys.reserve(continuousKeys.size() + discreteKeys.size()); std::copy(continuousKeys.begin(), continuousKeys.end(), std::back_inserter(allKeys)); std::transform(discreteKeys.begin(), discreteKeys.end(), @@ -34,6 +35,7 @@ KeyVector CollectKeys(const KeyVector &continuousKeys, /* ************************************************************************ */ KeyVector CollectKeys(const KeyVector &keys1, const KeyVector &keys2) { KeyVector allKeys; + allKeys.reserve(keys1.size() + keys2.size()); std::copy(keys1.begin(), keys1.end(), std::back_inserter(allKeys)); std::copy(keys2.begin(), keys2.end(), std::back_inserter(allKeys)); return allKeys;