我有两个问题:
1。)我刚刚找到了boost 1.53 Polygon实现(在http://www.boost.org/doc/libs/1_53_0/libs/polygon上)并想测试它,因为这些功能对像我这样的CAD程序员来说是惊人的。 (但我不知道模板重新初始化的内容“http://www.boost.org/doc/libs/1_53_0/libs/polygon/doc/voronoi_basic_tutorial.htm”) 有没有人知道一个很好的教程,它解释了为什么需要重新初始化这个模板以及如何正确地完成它。或者如何在没有它的情况下相处。
2。)在寻找Tutorials时,我发现很多网站使用#include“boost / geometry / geometry / polygon ...” 这与#include“boost / polygon ...”相同吗? 或者boost是否使用相同的两个实现(多边形)? 或者它只是一个版本控制的东西?
感谢所有能帮助我解决此问题的人。 此致
答案 0 :(得分:2)
Boost中有两个库引入了它自己的多边形概念:
我不确定你在说什么"模板重新初始化"。也许你想说"模板专业化"有时需要使某些课程适应概念。
如果您想知道为什么这样做。这允许调用在那些库中实现的算法,传递一些遗留类的对象。程序员必须将这些类调整为所需的概念之一,并且可以在不转换为某个中间对象的情况下使用它们。
这与在C ++中使用特征的方式非常相似。例如。当实现一些新的迭代器类时,std::iterator_traits<>
模板可以专门用于定义此迭代器的特征。这将是程序员应该做的事情之一,以使这个新的迭代器类适应其中一个Iterator概念,例如: ForwardIterator概念。然后他可以在std::for_each()
等STL算法中使用它。
这些库引入的多边形概念如下所述:
通常,库还提供已经适应所支持概念的类。例如。 Boost.Geometry提供boost::geometry::model::polygon<>
(http://www.boost.org/libs/geometry/doc/html/geometry/reference/models/model_polygon.html)
可能有可能让某些类适应这两个概念并在两个库中使用它,但我不确定。