内联stl类型列表管理器

An inline stl type list manager

本文关键字:管理器 列表 类型 stl 内联      更新时间:2023-10-16

假设我有一个std::vector<MyObject>

现在,我需要不时地向列表中添加和删除这些对象中的一些。我可以使用stl容器列表std::list<MyObject*>std::vector<MyObject*>作为列表。

然而,如果这个列表经常更改,这将需要相当多的内存分配和释放。

我通常是这样定义MyObject的:

class MyObject 
{
    stuff;
    MyObject* next;
};

然后将这些对象手工链接到一个链表中,并根据需要解除这些对象的链接。然而,这确实意味着每当我想这样做时,我都要手工编写链表,这可能容易出错。

我最希望的是:

class MyObject : public SomeListItem<MyObject> 
{
    stuff;
};

在这里与一些管理SomeList<MyObject>类一起,我的列表的逻辑是照顾。这应该在没有任何内存分配的情况下发生,因为链接指针已经存在于MyObject中。

在std或boost中是否存在这样的容器?

编辑问题是在我的算法过程中,我不断地创建和销毁大量预先存在的对象列表。使用嵌入到对象中的next指针意味着我可以使用这些列表而无需分配内存。

std::list或slist需要内存分配,这会产生不可接受的开销。

您正在寻找的正是Boost侵扰,它提供链表和其他容器。它的工作原理与您描述的非常相似——您可以继承它的基类,然后在容器中将对象链接在一起。当然,还有更多的功能,毕竟它是Boost。