3

2 つの質問があります。

1.) ブースト 1.53 ポリゴンの実装 ( 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..." を使用している多くの Web サイトが見つかりました。これは #include "boost/polygon..." と同じですか、またはブーストは 2 つを使用しますか?同じもの(ポリゴン)の実装?それとも単なるバージョン管理ですか?

これをクリアするのを手伝ってくれる人に感謝します。よろしく

4

1 に答える 1

2

Boost には、独自の Polygons の概念を導入する 2 つのライブラリがあります。

「テンプレートの再初期化」と言って何を考えているのかわかりません。あるクラスを概念に適合させるために時々必要とされる「テンプレートの特殊化」と言いたかったのかもしれません。

なぜこれがこのように行われるのか疑問に思っている場合。これにより、一部のレガシー クラスのオブジェクトを渡すライブラリに実装されているアルゴリズムを呼び出すことができます。プログラマーは、これらのクラスを必要な概念の 1 つに適合させるだけでよく、中間オブジェクトに変換することなくそれらを使用できます。

これは、C++ での特性の使用方法と非常によく似ています。たとえば、新しいイテレータ クラスが実装された場合、std::iterator_traits<>テンプレートは、このイテレータの特性を定義するために特化される場合があります。これは、この新しいイテレータ クラスをイテレータの概念の 1 つ (ForwardIterator の概念など) に適応させるためにプログラマが行うべきことの 1 つです。その後、彼はそれを のような 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 に答える