2

ブースト侵入フックの概念を説明できる人はいますか? ドキュメントを読んでも理解できない http://www.boost.org/doc/libs/1_47_0/doc/html/intrusive.html

4

1 に答える 1

3

Boost.intrusive は、侵入型コンテナに格納したいオブジェクトに沿って情報を提供することを強制します。

フックは、関連する侵入型コンテナに必要な情報を提供する方法です。そのために、格納するオブジェクトを定義するクラスは、フックから継承するか、それをメンバーとして所有できます。

侵入型コンテナがコンパイル時に完全に認識される必要がある限り、フックはテンプレートを使用してパラメータ化されます。これにより、オプションがテンプレート クラスであり、関連付けられた値がそのパラメータである構文になります。

たとえばlink_mode、テンプレート パラメーター リストでパラメーターを指定してリンク モードを定義し、その値を設定できます。

boost::intrusive::list< MyClass, boost::intrusive::link_mode< boost::intrusive::safe_link > > l;

最後になりましたが、フックにデフォルト以外の値が含まれている場合は、それをテンプレート パラメーターとして、使用する侵入型コンテナー クラスに渡す必要があります。

たとえば、侵入リストを考えると、これは置き換えることを意味します

boost::intrusive::list<MyClass> l;

boost::intrusive::list<MyClass, MyHook> l;
于 2012-07-04T08:04:20.550 に答える