[mlpack-git] master: Add move constructor for cover tree. (998daa1)
gitdub at mlpack.org
gitdub at mlpack.org
Tue Aug 23 15:58:25 EDT 2016
Repository : https://github.com/mlpack/mlpack
On branch : master
Link : https://github.com/mlpack/mlpack/compare/1148f1652e139c9037eb3813550090313d089a30...a8a8a1381b529a01420de6e792a4a1e7bd58a626
>---------------------------------------------------------------
commit 998daa1d2bce7236088645fd10dfe849f9b507bb
Author: MarcosPividori <marcos.pividori at gmail.com>
Date: Thu Jul 28 15:53:49 2016 -0300
Add move constructor for cover tree.
>---------------------------------------------------------------
998daa1d2bce7236088645fd10dfe849f9b507bb
src/mlpack/core/tree/cover_tree/cover_tree.hpp | 8 +++++
.../core/tree/cover_tree/cover_tree_impl.hpp | 40 ++++++++++++++++++++++
2 files changed, 48 insertions(+)
diff --git a/src/mlpack/core/tree/cover_tree/cover_tree.hpp b/src/mlpack/core/tree/cover_tree/cover_tree.hpp
index 5cf2f73..38a9f98 100644
--- a/src/mlpack/core/tree/cover_tree/cover_tree.hpp
+++ b/src/mlpack/core/tree/cover_tree/cover_tree.hpp
@@ -223,6 +223,14 @@ class CoverTree
CoverTree(const CoverTree& other);
/**
+ * Move constructor for a Cover Tree, possess all the members of the given
+ * tree.
+ *
+ * @param other Cover Tree to move.
+ */
+ CoverTree(CoverTree&& other);
+
+ /**
* Create a cover tree from a boost::serialization archive.
*/
template<typename Archive>
diff --git a/src/mlpack/core/tree/cover_tree/cover_tree_impl.hpp b/src/mlpack/core/tree/cover_tree/cover_tree_impl.hpp
index 0fa742a..7193ffe 100644
--- a/src/mlpack/core/tree/cover_tree/cover_tree_impl.hpp
+++ b/src/mlpack/core/tree/cover_tree/cover_tree_impl.hpp
@@ -521,6 +521,46 @@ CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::CoverTree(
}
}
+template<
+ typename MetricType,
+ typename StatisticType,
+ typename MatType,
+ typename RootPointPolicy
+>
+CoverTree<MetricType, StatisticType, MatType, RootPointPolicy>::CoverTree(
+ CoverTree&& other) :
+ dataset(other.dataset),
+ point(other.point),
+ children(std::move(other.children)),
+ scale(other.scale),
+ base(other.base),
+ stat(std::move(other.stat)),
+ numDescendants(other.numDescendants),
+ parent(other.parent),
+ parentDistance(other.parentDistance),
+ furthestDescendantDistance(other.furthestDescendantDistance),
+ localMetric(other.localMetric),
+ localDataset(other.localDataset),
+ metric(other.metric),
+ distanceComps(other.distanceComps)
+{
+ // Set proper parent pointer.
+ for (size_t i = 0; i < children.size(); ++i)
+ children[i]->Parent() = this;
+
+ other.dataset = NULL;
+ other.point = 0;
+ other.scale = INT_MIN;
+ other.base = 0;
+ other.numDescendants = 0;
+ other.parent = NULL;
+ other.parentDistance = 0;
+ other.furthestDescendantDistance = 0;
+ other.localMetric = false;
+ other.localDataset = false;
+ other.metric = NULL;
+}
+
// Construct from a boost::serialization archive.
template<
typename MetricType,
More information about the mlpack-git
mailing list