【问题标题】:Lookin' for a container and memory pool solution寻找容器和内存池解决方案
【发布时间】:2010-03-09 08:56:07
【问题描述】:
在一个嵌入式程序中,我有一个屏幕对象,它需要管理要显示的项目列表。初始项目列表将在屏幕加载时从一个简单的数据库中提取,并且该列表将通过“添加”和“删除”事件进行更新。此列表需要根据某些标准进行排序。我正在寻找可以帮助我完成此任务的容器类。此外,系统中没有动态内存,因此我需要有一个空项目的内存池,我可以将其加载到容器中并在完成项目后返回到空闲池。
有人知道 C++ 标准库或 Boost 中有什么合适的吗?或者也许是另一种解决方案?
【问题讨论】:
标签:
c++
user-interface
boost
c++-standard-library
【解决方案2】:
如果你使用标准容器(例如std::map或std::set)你需要担心不同的动态分配:内部容器数据结构的分配和你自己想要存储在容器。内部数据结构的分配可以通过提供您自己的 std::allocator 来定制(我相信您将能够找到一个适合您需要的,有很多可用的)。您自己的数据结构的分配需要单独处理,最常见的是通过实现特定于类型的new 和delete 运算符。 Scott Meyers 在他的一本书中有一篇很好的文章。
另一个解决方案是使用 Boost.Intrusive,这是一组容器,其中容器所需的所有内部数据项都存储在您自己的数据结构中(这就是它们被称为侵入式的原因)。这使您不必使用两种不同的分配方案,因为您只需要担心自己的数据分配。