3

我有两个问题:

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.) 在寻找教程时,我发现很多网站都使用#include "boost/geometry/geometries/polygon..." 这与 #include "boost/polygon..." 是否相同或者 boost 使用两个同一事物(多边形)的实现?或者它只是一个版本控制的事情?

感谢任何可以帮助我清除此问题的人。问候

4

1 回答 1

2

Boost 中有两个库引入了它自己的 Polygons 概念:

我不确定您说“模板重新初始化”是什么意思。也许您想说“模板专业化”,有时需要将某些类适应概念。

如果您想知道为什么要这样做。这允许调用在那些传递一些遗留类的对象的库中实现的算法。程序员必须使这些类适应所需的概念之一,并且他可以在不转换为某些中间对象的情况下使用它们。

这与 C++ 中使用特征的方式非常相似。例如,当实现一些新的迭代器类时,std::iterator_traits<>模板可能会专门为该迭代器定义特征。这将是程序员应该做的事情之一,以使这个新的迭代器类适应迭代器概念之一,例如 ForwardIterator 概念。然后他可以在 STL 算法中使用它,例如std::for_each().

这些库引入的多边形概念如下所述:

通常,库还提供已适应受支持概念的类。例如 Boost.Geometry 提供boost::geometry::model::polygon<>http://www.boost.org/libs/geometry/doc/html/geometry/reference/models/model_polygon.html

可能有可能使某些类适应这两个概念并在两个库中使用它,但我不确定。

于 2014-04-15T17:05:08.010 回答