【发布时间】:2010-08-19 11:30:25
【问题描述】:
对于硬盘存储,我需要一个基于红黑树的多索引容器(类似于boost::multi_index::multi_index_container)。所有数据都必须存储在硬盘而不是内存中。
是否存在满足所述条件的开源容器?
注意。我用C++。
【问题讨论】:
标签: c++ boost red-black-tree multi-index hard-drive
对于硬盘存储,我需要一个基于红黑树的多索引容器(类似于boost::multi_index::multi_index_container)。所有数据都必须存储在硬盘而不是内存中。
是否存在满足所述条件的开源容器?
注意。我用C++。
【问题讨论】:
标签: c++ boost red-black-tree multi-index hard-drive
如果您有内存解决方案,您可以使用内存映射文件和自定义分配器来实现持久存储。
【讨论】:
恐怕我什么都不知道。
对于硬盘存储,我只能推荐查看STXXL,它提出了适用于只能存储在磁盘上的数据的 STL 容器和算法。他们已经实现了很多东西来实现更流畅的操作,主要是通过尽可能多地缓存在内存中并尽可能延迟磁盘访问。
现在这不会给你一个多索引,但至少你会有一个 STL :)
然后,如果您确定,您可以移植多索引以使用 STXXL 提供的功能:它们已将 IO 访问/内存缓存与容器本身解除关联。
或者您可以简单地根据他们的 STL 兼容容器编写您需要的内容。
【讨论】:
SQLite 怎么样?它可以使用磁盘作为后备存储,并支持数据的多个索引,就像 Boost Multi Index 一样。
【讨论】: