我正在用 C++ 开发一个小项目,其中一个操作的完整结果最终将写入一个文件。此操作是在潜在大矩阵的小块上完成的。由于每次处理一个 block 时不断写入磁盘似乎效率很低,我认为最好将所有部分结果存储在内存中,然后一次性写入文件。问题在于处理每个数据 block 的输出可以具有可变大小,并且在处理之前无法知道所需的大小。所以我想知道,我可以使用什么作为存储所有部分结果的缓冲区?我想过使用 vector ,但由于我对 C++ 不是很熟悉,我想我会问是否有更好的方法。
最佳答案
ofstreams 已经被缓冲,C FILE 流也是如此。在这两种情况下,操作系统执行缓冲和 I/O 调度。
只是天真地使用它们,不要担心重新发明它,除非分析显示您的 I/O 是瓶颈。
关于C++ 在所需大小未知时使用内存中的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25332096/