在一个嵌入式程序我有需要管理的项目显示的列表的屏幕对象。项目的初始列表会从一个简单的DB在屏幕上负载拉的名单将通过“添加”和“删除”事件进行更新。这个列表需要按照一定的标准进行排序。我找一个容器类,可以帮助我做到这一点的。此外,还有一个系统中没有动态内存,所以我需要有空项目的内存池,我可以装入容器中,并返回到空闲池时,我与该项目完成的。

任何人都知道的C ++标准库中适当的任何东西,或升压?或者也许另一溶液?

有帮助吗?

解决方案

如果您使用的是标准容器(如std::mapstd::set),你不必担心不同的动态分配:内部容器数据结构的分配,并要在容器来存储自己的数据的分配。内部数据结构的分配可以通过提供自己的std ::分配器进行定制(我敢肯定,你就可以找到一个适合您的需求,也有大量的可用)。需要进行最常用的实现类型特定newdelete运营商单独处理,你自己的数据结构的分配。斯科特迈尔斯在他的一本书有关这个好文章。

另一种解决办法是利用Boost.Intrusive,集所有所需的容器内部的数据项都存储在自己的数据结构容器(这就是为什么它们被称为侵入)。这可减轻您到位有两种不同的分配方案,因为你需要担心的只有你自己的数据分配。

其他提示

为什么不使用STL,但提供自己的分配和释放器,例如STL向量被定义为template<class T,class A = std::allocator<T>> vector {},您可以创建并设置自己的分配器,从你的记忆池要求的存储空间。

作为内存分配器,可以使用现有的内存分配器如囤积居奇 http://www.hoard.org/ 或奈德分配器 http://www.nedprod.com/programs/portable/ nedmalloc / 这是相当高的性能和良好的对嵌入式系统。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top