我不太明白相同的元素如何可能出现在不同的侵入性容器中,同时保留boost::intrusive
文档所述的性能和内存使用保证。
文档说:
侵入式容器不存储传递对象的副本,而是存储对象本身。将对象插入容器所需的附加数据必须由对象本身提供。例如,要插入
MyClass
实现链表的侵入式容器,MyClass
必须包含所需的 next 和 previous 指针:
class MyClass
{
MyClass *next;
MyClass *previous;
// ...
};
在强调 STL 和 boost::intrusive 容器之间的区别时,文档还说:
非侵入式容器有一些限制:
一个对象只能属于一个容器:如果要在两个容器之间共享一个对象,则要么必须存储这些对象的多个副本,要么需要使用指针容器:
std::list<Object*>
.
有道理,一个元素不能在两个std::list
s 中。好的。但是如何将一个类型的实例MyClass
插入两个不同boost::intrusive::list
的 ',例如,考虑到这样的元素只能有一个指向下一个元素的指针和一个指向前一个元素的指针。如果我没记错的话,这仅在您假设修改一个容器也可能修改另一个容器时才有效,反之亦然。