Ортогональный поиск — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Новая страница: «== Простейший случай == Пусть дана прямая с точками на ней и отрезок. Необходимо указать, к...»)
 
(Простейший случай)
Строка 7: Строка 7:
 
Код реализации:
 
Код реализации:
  
template<class RauIter, class OutIter, class Scalar> OutIter range_search(RauIter p, RauIter q, OutIter out) <br / >
+
template<class RauIter, class OutIter, class Scalar> OutIter range_search(RauIter p, RauIter q, OutIter out)
{<br / >
+
{
return std::copy(lower_bound(p, q, l), upper_bound(p, q, r), out);<br / >
+
    return std::copy(lower_bound(p, q, l), upper_bound(p, q, r), out);
}<br / >
+
}
  
 
== Сбалансированное дерево поиска ==
 
== Сбалансированное дерево поиска ==

Версия 21:48, 23 апреля 2012

Простейший случай

Пусть дана прямая с точками на ней и отрезок. Необходимо указать, какие из изначальных точек лежат на этом отрезке.

Данная задача решается с помощью функций из STL - upper_bound и lower_bound

Код реализации:

template<class RauIter, class OutIter, class Scalar> OutIter range_search(RauIter p, RauIter q, OutIter out)
{
   return std::copy(lower_bound(p, q, l), upper_bound(p, q, r), out);
}

Сбалансированное дерево поиска

Квадро дерево

Инкрементальное квадо дерево