13 #ifndef MLPACK_CORE_TREE_RECTANGLE_TREE_HR_TREE_AUXILIARY_INFO_IMPL_HPP 14 #define MLPACK_CORE_TREE_RECTANGLE_TREE_HR_TREE_AUXILIARY_INFO_IMPL_HPP 21 template<
typename TreeType,
22 template<
typename>
class HilbertValueType>
27 template<
typename TreeType,
28 template<
typename>
class HilbertValueType>
34 template<
typename TreeType,
35 template<
typename>
class HilbertValueType>
44 template<
typename TreeType,
45 template<
typename>
class HilbertValueType>
48 hilbertValue(
std::move(other.hilbertValue))
51 template<
typename TreeType,
52 template<
typename>
class HilbertValueType>
57 hilbertValue = other.hilbertValue;
61 template<
typename TreeType,
62 template<
typename>
class HilbertValueType>
70 size_t pos = hilbertValue.InsertPoint(node, node->Dataset().col(point));
73 for (
size_t i = node->NumPoints(); i > pos; i--)
74 node->Point(i) = node->Point(i - 1);
77 node->Point(pos) = point;
83 hilbertValue.InsertPoint(node, node->Dataset().col(point));
89 template<
typename TreeType,
90 template<
typename>
class HilbertValueType>
100 for (pos = 0; pos < node->NumChildren(); pos++)
101 if (HilbertValueType<ElemType>::CompareValues(
102 node->Child(pos).AuxiliaryInfo().HilbertValue(),
103 nodeToInsert->AuxiliaryInfo().HilbertValue()) < 0)
107 for (
size_t i = node->NumChildren(); i > pos; i--)
108 node->children[i] = node->children[i - 1];
111 node->children[pos] = nodeToInsert;
112 nodeToInsert->Parent() = node;
115 hilbertValue.InsertNode(nodeToInsert);
118 hilbertValue.InsertNode(nodeToInsert);
123 template<
typename TreeType,
124 template<
typename>
class HilbertValueType>
129 hilbertValue.DeletePoint(node, localIndex);
131 for (
size_t i = localIndex + 1; localIndex < node->NumPoints(); ++i)
132 node->Point(i - 1) = node->Point(i);
138 template<
typename TreeType,
139 template<
typename>
class HilbertValueType>
144 hilbertValue.RemoveNode(node, nodeIndex);
146 for (
size_t i = nodeIndex + 1; nodeIndex < node->NumChildren(); ++i)
147 node->children[i - 1] = node->children[i];
149 node->NumChildren()--;
153 template<
typename TreeType,
154 template<
typename>
class HilbertValueType>
161 TreeType& child = node->Child(node->NumChildren() - 1);
162 if (hilbertValue.CompareWith(child.AuxiliaryInfo().HilbertValue()) < 0)
164 hilbertValue = child.AuxiliaryInfo().HilbertValue();
170 template<
typename TreeType,
171 template<
typename>
class HilbertValueType>
175 hilbertValue.NullifyData();
178 template<
typename TreeType,
179 template<
typename>
class HilbertValueType>
180 template<
typename Archive>
185 ar(CEREAL_NVP(hilbertValue));
192 #endif // MLPACK_CORE_TREE_RECTANGLE_TREE_HR_TREE_AUXILIARY_INFO_IMPL_HPP
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
Definition: pointer_wrapper.hpp:23