问题如下:我有一定数量的单词(比如说20M),每个单词都包含一些用作标志的位;全部存储在单个连续的二进制文件中。
我想做的是以容器样式访问这些单词,因此container_instance[i]
允许我访问第 i 个单词。为了让事情变得更复杂,我不能一次将所有单词存储在内存中,它们必须存储回文件并为那些长期不使用的单词释放内存。为了简化事情,整个序列被划分为 1K 个片段,所以我们需要释放和分配这样的 1K 个块。内存应该在一段时间或容器被访问一定次数后被释放。
很高兴拥有线程安全。但我可以在外部保护。
我目前的实现只按需分配块(如果可用,则为空或从文件中读取;文件不是稀疏的,因此文件中最后一个字节之后的所有内容都分配为空)并且做得不好。根本不释放,因此未使用的块永远保留在内存中。
我开始考虑漂亮的解决方案,我想知道 STL 或 Boosts 中的任何元素是否可以帮助我构建这样的容器,而不是从头开始逐步雕刻它?
我并不期待完整的解决方案,而是指出“您可以为此使用它”。