具有静态分配节点的 C++ std::list

标签 c++ linux list

Linux linked list允许将静态分配的节点放入列表中。我想使用带有自定义分配器的 std::list 来做类似的事情。

Linux 方法的美妙之处在于,为嵌入式系统使用静态节点分配器,分配的列表节点数始终可以保持“恰到好处”。没有可供分配的池或堆。列表节点,如果是静态分配的,则分配给正在使用的对象。在需要时使用,在不需要时不返回到空闲或池中(可能是浪费),但始终准备好被其关联对象使用/用于其关联对象。

尝试用 std::list 做一些事情我可以写一个自定义分配器,但我发现我只有一个“池”类型的构造可以使用。

由于列表节点(在 ARM GCC 6.x 实现结构 _List_node_base 中,位于 include/c++/6.3.1/bits/STL_list.h 中)依赖于实现(不可移植)。

是否有为 std::容器执行静态节点分配的已知做法?

(我认为如果我有一个特征 std::list::node_type,我的跨功能问题就会得到解决。)

最佳答案

如果您不介意在列表使用方面做一些额外的工作,您可以有另一个 std::list,它将包含特定列表类型的所有空闲节点。

您可以使用 std::list::splice 将节点移入和移出该列表

关于具有静态分配节点的 C++ std::list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48051727/

相关文章:

python - 类型错误 : expected string or bytes-like object and works on server but not on PC

linux - 如何通过脚本创建 crontab

list - 如何将列表中的偶数乘以三倍?

python - 如何提取 Python 列表中的重复元组?

c++ - 非空终止字符数组的 std::string_view 的大小差异

c++ - 停止右值调用移动赋值 C++ 11

C++ - 动态内存分配需要的内存

c++ - xcode 断点未通过包含的 cpp 文件解决 - MacOS

django - 从运行服务器迁移到生产服务器

java - 如何将列表/ map 与组合框一起使用