0

boost::multi_index::multi_index_container对于硬盘存储,我需要一个基于红黑树(类似于 )的多索引容器。所有数据必须存储在硬盘上而不是内存中。

是否存在符合所述条件的开源​​容器?

笔记。我用C++.

4

3 回答 3

1

SQLite怎么样?它可以使用磁盘作为后备存储,并支持数据的多个索引,就像 Boost Multi Index 一样。

于 2011-03-10T13:21:03.030 回答
1

如果您有内存解决方案,则可以使用内存映射文件和自定义分配器来实现持久存储。

于 2010-08-19T12:04:25.647 回答
1

恐怕我一个都不知道。

对于硬盘存储,我只能推荐STXXL,它提出了适用于只能存储在磁盘上的数据的 STL 容器和算法。他们已经实现了很多东西来实现更流畅的操作,主要是通过尽可能多地缓存在内存中并尽可能延迟磁盘访问。

现在这不会给你一个多索引,但至少你会有一个 STL :)

然后,如果您确定,您可以移植多索引以使用 STXXL 提供的工具:它们已将 IO 访问/内存缓存与容器本身解除关联。

或者您可以简单地根据他们的 STL 兼容容器编写您需要的内容。

于 2010-08-19T14:35:35.960 回答