【发布时间】:2010-09-14 01:13:17
【问题描述】:
我喜欢使用 STL 开发算法,但是,我经常遇到这个问题,即我的数据集对于堆来说太大了。
我一直在寻找 STL 容器和磁盘支持的算法的直接替代品,即存储在磁盘上而不是堆上的数据结构。
一位朋友最近将我指向stxxl。在我过多参与之前...是否还有其他可用的磁盘支持的 STL 替代品我应该考虑?
注意:我对持久性或嵌入式数据库不感兴趣。请不要提及 boost::serialization、POST++、关系模板库、Berkeley DB、sqlite 等。我知道这些项目并在适合我的目的时使用它们。
更新:有几个人提到了内存映射文件和使用自定义分配器,顺便说一句很好的建议,但我会把他们指向讨论 here,其中 David Abraham 建议磁盘需要自定义迭代器 -支持的容器。这意味着自定义分配器方法不太可能奏效。
【问题讨论】:
-
如果您的数据集对于堆来说太大,您应该考虑您的系统架构是否正确(例如,是否迁移到 64 位系统;这些现在比问题更常见问)。您还应该考虑 STL 是否是正确的方法;它可能对数据集大小做出了不适合您的假设。
-
@Donal 他可能没有保留正确的内存量。
标签: c++ algorithm data-structures stl on-disk