Повысить внутреннее представление полигона геометрии в виде списка STL? - PullRequest
0 голосов
/ 05 ноября 2018

Насколько я знаю, полигон форсирования представлен в виде вектора STL. Это не удобно, когда необходимо добавить новую точку по определенному индексу многоугольника, поскольку это линейная сложность.

Есть ли способ заставить буст использовать представление списка или иным образом решить проблему добавления точки в индекс многоугольника за постоянное время?

1 Ответ

0 голосов
/ 05 ноября 2018

Весь смысл геометрии ускорения Обоснование дизайна заключается в программировании на концепций , а не моделей .

По умолчанию модель полигона, который вы описываете, действительно использует std::vector, но вы можете использовать любую модель - включая ваши собственные типы или сторонние типы, учитывая некоторую адаптацию .

Итак, без лишних слов, используйте встроенную модель со списком:

Live On Coliru

#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <list>

int main() {
    using namespace boost::geometry;
    using Point = model::d2::point_xy<double>;
    model::polygon<Point, true, true, std::list> p;
}
...