c++ - 如何高效地将大量元素追加到 stxxl vector 中?

标签 c++ vector stxxl

我需要将大量元素附加到 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/

相关文章:

c++ - Blob 内数据的对齐和填充

c++ - 在 STXXL 中结合流和迭代

c++ - 为什么存储指向内部存储器的普通指针的结构不能存储在 stxxl 容器中?

python - 获取 Qt 中的输出 : 'QProcess::start()' and 'QProcess:readAllStandardOutPut()'

c++ - 模板类中定义的常量

c++ - 访问存储在 vector 中的指针内的字符串时崩溃

r - 在数值向量中查找模式

c++ - 带有指向 const 对象的 const 指针的 std::vector 不编译

c++ - 在 Qt 项目中使用 STXXL

c++ - Open GL 旋转