我需要将大量元素附加到 stxxl vector 中。将元素添加到 stxxl vector 的最有效方法是什么?现在,我正在使用 stxxl vector 的push_back,但它似乎不是很有效。它远未使磁盘带宽饱和。有更好的办法吗?
谢谢, 达
最佳答案
大多数内容都是关于 "Efficient Sequential Reading and Writing to Vectors" 的适用于您的情况。
除了使用命令式循环填充 vector 的 vector_bufwriter 之外,还有 stxxl::stream::materialize() 的变体,它以函数式编程风格完成此操作。
关于事先知道 vector 的大小:这对于 EM 来说并不是真正必要的,因为可以动态分配 block 。这些通常不会按顺序排列,但就这样吧,无论如何都不能保证这一点。
我看到有人(我)让 vector_bufwriter 在填充到达 vector 末尾时自动将 vector 的大小加倍。目前,我认为没有必要,也许应该改变这种行为。
关于c++ - 如何高效地将大量元素追加到 stxxl vector 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27113731/