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 回答