我有各种std::vector实例,其中包含数值数据,主要是int16_t,int32_t等。我想以最快的方式将此数据转储到文件中。如果我使用ostream_iterator,它会在单个操作中写入整个内存块,还是会在 vector 的元素上进行迭代,为每个 vector 发出写入操作?

最佳答案

在我熟悉的任何实现中,流迭代器和 vector 都绝对不会使用块副本。例如,如果 vector 项目类型是类而不是POD,则直接复制将是一件坏事。我怀疑ostream也将格式化输出,而不是直接写入值(即ascii而不是二进制输出)。

您可能会对boost::copy感到更好,因为它经过特别优化,可以在可能的情况下进行块写入,但是最实用的解决方案是直接使用&v[0]在 vector 存储器上进行操作。

10-07 16:26
查看更多