使用在运行时指定尺寸的boost几何体
Using boost geometry with dimension specified at runtime
boost::geometry::model::point将点的维度作为编译时参数。例如,
typedef bg::model::point<float, 2, bg::cs::cartesian> point;
有没有任何方法可以在运行时指定尺寸,比如说,根据程序的输入?
我的目标是在boost::geometry::index中使用任意维度的rtree数据结构。有可能用这个特性编写一个自定义点类吗?或者类型系统会阻止我这样做吗?
没有办法,因为库提供了便利。
您可以随时使用自己的类型擦除。这将需要一些努力,并且取决于它的执行方式,可能需要一些性能。
事实上,这也是它不能与库设计"结合"的原因。该库通过泛型非常关注性能。
与您预期的相反,这不支持运行时多态性,因为这会妨碍性能。相反,使用了严格的编译时多态性。编译器可以内联并"透视"所有代码路径,以生成最佳代码。
我不知道为什么这个问题的答案"不可能"被接受。这个问题只是问这是否可能,而不是表现或平庸。我目前在类中使用支持[1-6]维度的boost::geometry
的rtree数据结构作为内部容器。
template <typename T, std::size_t N>
using BoostHyperPoint = bg::model::point<T, N, bg::cs::cartesian>;
您几乎可以像上面那样简单地定义这样一个模板化的点。只要多花一点力气,就可以拥有一个通用的rtree类。
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- boost::进程间消息队列引发错误
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- cmake如何在fedora工作站中找到boost静态库包
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 无法将结构注册为增强几何体3D点
- Boost Graph Library,修复节点大小
- 什么是"#include <boost/functional/hash.hpp> "?
- 基于boost的程序的静态链接——zlib问题
- C++:如何在CLion IDE中安装Boost
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- 如何在boost beast http请求中设置http头
- Boost Spirit,获取迭代器内部语义动作
- boost::asio::steady_timer()与sleep()我应该使用哪一个
- boost::asio如何生成多个协同程序,然后加入它们
- 当我尝试使用 sstream 和分面将 Boost Time_duration转换为字符串时,我没有得到所需的格式
- 使用在运行时指定尺寸的boost几何体
- 访问boost::几何体多边形中的点数据时出错
- Boost几何体将点2d注册为共享指针
- 我可以在boost::几何体的多边形中存储其他信息吗