我喜欢使用STL开发算法,但是,我经常遇到这样的问题,即我的数据集对于堆来说太大了。
我一直在寻找磁盘支持的STL容器和算法的直接替代,即存储在磁盘而不是堆上的数据结构。
最近有一个朋友将我指向stxxl。在我太忙之前…我是否应考虑其他磁盘支持的STL替代产品?
注意:我对持久性或嵌入式数据库不感兴趣。 请不要提及boost :: serialization,POST ++,关系模板库,Berkeley DB,sqlite等。我知道这些项目,并在适合我的目的时使用它们。
更新:有人提到了内存映射文件并使用了自定义分配器,这是不错的建议,但我要在 这里进行讨论,David Abraham建议磁盘支持的容器需要自定义迭代器。这意味着自定义分配器方法不太可能起作用。
我已经实现了一些非常相似的东西。实现迭代器是最具挑战性的。我使用 boost :: iterator_facade 来实现迭代器。使用boost::iterator_facade该工具,可以 轻松地将 磁盘上 缓存的任何 数据结构调整 为具有STL容器接口。
boost::iterator_facade