Lines Matching refs:last

84   int dimension_of_highest_variance(__instype * first, __instype * last,
86 assert(last - first > 0);
92 for (__instype * k = first; k < last; ++k)
94 mean /= last - first;
96 for (__instype * k = first; k < last; ++k) {
100 var /= last - first;
113 // given point indices and dimension, find index of median; (almost) modifies [first,last)
114 // such that points_in[first,median]<=point[median], points_in(median,last)>point[median].
117 __instype * median_partition(__instype * first, __instype * last,
119 assert(last - first > 0);
120 __instype *k = first + (last - first) / 2;
121 median_partition(first, last, k, dim, ctor);
140 void median_partition(__instype * first, __instype * last,
142 int pivot = (last - first) / 2;
144 std::swap(first[pivot], last[-1]);
145 __instype *middle = std::partition(first, last - 1,
147 (last[-1], dim, deref, ctor));
148 std::swap(*middle, last[-1]);
151 median_partition(middle + 1, last, k, dim, ctor);
158 int insert(__instype * first, __instype * last, __valuector ctor) {
159 if (first == last)
163 int dim = dimension_of_highest_variance(first, last, ctor);
164 __instype *median = median_partition(first, last, dim, ctor);
167 for (; split != last && deref(ctor(*split), dim) ==
170 if (split == last) { // leaf
193 int right = insert(split, last, ctor);
241 CvKDTree(__valuetype * first, __valuetype * last, int _point_dim,
244 set_data(first, last, _point_dim, identity_ctor());
248 CvKDTree(__instype * first, __instype * last, int _point_dim,
251 set_data(first, last, _point_dim, ctor);
258 void set_data(__valuetype * first, __valuetype * last, int _point_dim) {
259 set_data(first, last, _point_dim, identity_ctor());
262 void set_data(__instype * first, __instype * last, int _point_dim,
266 nodes.reserve(last - first);
267 root_node = insert(first, last, ctor);