替代std :: vector存储对象序列的方法

4
我正在处理数百万个数据元素,需要按顺序访问。这些元素很少增长和缩小,但以已知的块大小以可预测的方式进行。我正在寻找一种类似于std::vector的高效集合,它不会重新分配内存,而是将数据保存在多个内存块中。每当我向集合中压入更多的对象,并且最后一个块已经用完,则会创建并填充新的块。我不想要一个随机访问操作符。由于性能问题和其他问题超出了此问题的范围,我不能使用std::list。
在boost或任何其他库中是否有适合我需求的现成集合?在尝试自己制作之前,我想确保没有现成的解决方案可用。

4
你试过使用std::deque吗? - nogard
1
这样的代码怎么样:std::vector< std::array<T, CHUNK_SIZE> > v; - jrok
4
那么你可能希望重新表述一下你的问题中的“固定块”。它让我认为块的大小是恒定的。 - jrok
1
我认为你需要自己编写代码。也许可以在底层使用一个向量的向量。 - James Kanze
1
重新阅读一遍,你只是想要一个块的向量吗? - Mooing Duck
显示剩余6条评论
1个回答

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

不错的想法。但是我已经使用deque向量实现了它(作为块),而且它运行得很好。 - Ram

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接