使用具有在运行时指定的维度的boost几何

问题描述 投票:3回答:1

boost :: geometry :: model :: point将点的维度作为编译时参数。例如,

typedef bg::model::point<float, 2, bg::cs::cartesian> point;

有没有办法在运行时指定维度,比如,取决于给予程序的输入?

我的目标是在boost :: geometry :: index中使用任意维度的rtree数据结构。是否可以使用此功能编写自定义点类,或者类型系统是否会阻止我这样做?

c++ boost boost-geometry r-tree
1个回答
1
投票

图书馆为此提供了便利。

您始终可以使用自己的类型擦除。这将需要一些努力,并且取决于它的执行方式,可能还有一些性能。

这实际上也是因为它没有与图书馆设计“凝固”的原因。图书馆通过通用性强调性能。

与您的预期相反,这不支持运行时多态性,因为这会妨碍性能。相反,使用严格的编译时多态性。编译器可以内联并“透视”所有代码路径以生成最佳代码。

© www.soinside.com 2019 - 2024. All rights reserved.