将几何多边形内部表示提升为 STL 列表?
Posted
技术标签:
【中文标题】将几何多边形内部表示提升为 STL 列表?【英文标题】:Boost geometry polygon inner representation as a STL list? 【发布时间】:2018-11-05 15:30:24 【问题描述】:据我所知,boost 多边形表示为 STL 向量。当需要在多边形的特定索引处添加新点时,这并不方便,因为这是线性复杂度。
有没有办法让 boost 使用列表表示或以其他方式解决在恒定时间内向多边形索引添加点的问题?
【问题讨论】:
你的多边形很大吗?如果少于 1000 点,我会忽略这个向量问题,因为列表插入/擦除通常需要内存(取消)分配,这非常慢。 @SvenNilsson 提出了一个很好的观点,始终分析您的代码 【参考方案1】:the Boost Geometry Design Rationale 的全部意义在于编程到concepts,而不是models。
您描述的多边形的默认模型确实使用std::vector
,但您可以使用任何模型——包括您自己的类型或第三方类型,给定some adaption。
所以,事不宜迟,将builtin model 与列表一起使用:
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;
【讨论】:
以上是关于将几何多边形内部表示提升为 STL 列表?的主要内容,如果未能解决你的问题,请参考以下文章