内联stl类型列表管理器
An inline stl type list manager
假设我有一个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。
相关文章:
- 如何维护资源管理器项目视图中当前可见的项目列表
- 使用"Task"函数指针队列定义作业管理器
- 实现动态插件管理器
- 为什么我需要在成员发起器列表中重复基类的模板参数?
- 编译器资源管理器和 GCC 具有不同的输出
- Windows 资源管理器中的图标在使用 resource.rc 时显示 2 个不同的图标
- C++ 事件管理器的回调,使用 std::function 和 std:bind 以及派生类作为参数
- Linux 包管理器如何处理 C++20 个模块?
- 将初始化器列表/聚合初始化转发到 std::array 成员
- 编译器资源管理器(godbolt)如何安全地运行代码?
- 创建跨平台 C++ 触摸管理器.在 c++ 中传递 Objective-c 对象涉及代码
- 从 GUI 文件资源管理器执行程序,并且不生成终端
- 自定义内存管理器在发布模式下工作正常,但在调试模式下则不然
- 无法删除EXE崩溃后,即使进程未显示在任务管理器中
- 任务管理器 - C/C++ 应用程序 - 分配的地址空间与已用内存
- 在任务管理器的应用程序选项卡中获取运行任务的列表
- 输入法管理器函数 - 平假名到汉字候选列表 c++ covnersion 的正确调用顺序
- 如何在设备管理器Windows-c++中获得带有黄色感叹号的设备列表
- 列表视图-资源管理器如何在小图标视图中获得相同大小的所有项目
- 内联stl类型列表管理器