bgl_named_params<Param, Type, Rest>
多くの Boost.Graph アルゴリズムは長いパラメータ列を持ち、その多くはデフォルト値を持つ。これがいくつかの問題を起こす。 1 つは、 C++ がテンプレート関数のデフォルト値を扱う仕組みを持っていない事だ。しかし、異なる数のパラメータを持つ複数のバージョンのアルゴリズムを作り、各バージョンが一部のパラメータにデフォルト値を与える事で、この問題は克服される。これは Boost.Graph の以前のバージョンで使われていたアプローチだ。しかし、この解決法はまだ、いくつかの理由で不充分だ。
より良い解決法を与えるのが bgl_named_params だ。このクラスを使えば、パラメータを任意の順序で与える事ができ、パラメータ名によって引数をパラメータに適合できる。
以下のコードで、名前付きパラメータのテクニックを使って bellman_ford_shortest_paths を呼び出す例を示す。各引数は、引数がどのパラメータに与えられるのかを示す名前を持つ関数に渡される。それぞれの名前付きパラメータは、カンマではなくピリオドで区切られる。
bool r = boost::bellman_ford_shortest_paths(g, int(N), boost::weight_map(weight). distance_map(&distance[0]). predecessor_map(&parent[0]));
引数が正しいパラメータ関数に適合される限り、引数が与えられる順序はどうでも良い。これは、上のものと等価な bellman_ford_shortest_paths の呼び出しである。
bool r = boost::bellman_ford_shortest_paths(g, int(N), boost::predecessor_map(&parent[0]). distance_map(&distance[0]). weight_map(weight));
一般に、ユーザは bgl_named_params クラスを直接使う必要は無い。 boost::weight_map のような bgl_named_params のインスタンスを作る関数が有るからだ。
Copyright © 2000-2001 |
Jeremy Siek,
Indiana University (jsiek@osl.iu.edu) Lie-Quan Lee, Indiana University (llee@cs.indiana.edu) Andrew Lumsdaine, Indiana University (lums@osl.iu.edu) |
Japanese Translation Copyright © 2003 Hiroshi Ichikawa
オリジナルの、及びこの著作権表示が全ての複製の中に現れる限り、この文書の複製、利用、変更、販売そして配布を認める。このドキュメントは「あるがまま」に提供されており、いかなる明示的、暗黙的保証も行わない。また、いかなる目的に対しても、その利用が適していることを関知しない。
このドキュメントの対象: Boost Version 1.29.0
最新版ドキュメント (英語)