替代std :: vector来存储一系列对象

时间:2013-05-10 09:29:45

标签: c++ boost stdvector

我正在处理要按顺序访问的数百万个数据元素。元素很少生长和缩小,但是以可预测的方式在已知的块大小中这样做。

我正在寻找一个类似于std :: vector的高效集合,它不会重新分配,而是将数据保存在多个内存块中。每当我将更多对象推入集合中并且如果最后一个块耗尽时,则创建并填充新块。我不希望有一个随机访问运算符。由于性能问题和一些超出手头问题范围的其他问题,我不能使用std :: list。

是否有适合我在boost或任何其他库中的要求的现成集合。我想确保在我尝试自己烹饪之前没有任何可用的架子。

1 个答案:

答案 0 :(得分:1)

在我看来,最好的选择是在B树中存储许多std::vector。 B-Tree允许您在树遍历期间引用内存中的区域而不实际访问它们,从而允许最小的文件访问。