我正在处理要按顺序访问的数百万个数据元素。元素很少生长和缩小,但是以可预测的方式在已知的块大小中这样做。
我正在寻找一个类似于std :: vector的高效集合,它不会重新分配,而是将数据保存在多个内存块中。每当我将更多对象推入集合中并且如果最后一个块耗尽时,则创建并填充新块。我不希望有一个随机访问运算符。由于性能问题和一些超出手头问题范围的其他问题,我不能使用std :: list。
是否有适合我在boost或任何其他库中的要求的现成集合。我想确保在我尝试自己烹饪之前没有任何可用的架子。
答案 0 :(得分:1)
在我看来,最好的选择是在B树中存储许多std::vector
。 B-Tree允许您在树遍历期间引用内存中的区域而不实际访问它们,从而允许最小的文件访问。