在生成数据的同时以列方式快速打印流(预分配流?)

时间:2014-06-05 11:43:53

标签: c++ c++11 stl

希望我没有错过已经存在的答案。 OBS!我不是在寻找格式化方面的帮助How do I correctly organize output into columns?

我正在生成多列数据,一次一列。每个列都是在for循环的一个步骤中生成的,我在创建值时使用std :: ofstream将所有内容写入文本文件。

现在我的问题是,我可以在创建它们时将每个列写入同一个流吗?

我将尝试用一个例子来澄清:让我们说最终数据如下:

   Column1  Column2  Column3
   val11    val12    val13
   val21    val22    val23
   val31    val32    val33

但数据是以这种方式生成的:

    for-loop step 1: val11 val21 val31
    for-loop step 2: val12 val22 val32
    for-loop step 3: val13 val23 val33

我想写这样的流(在for循环中)

    stream step 1: val11 empty empty\n  val21 empty empty\n  val31 empty empty\n
    stream step 2: val11 val12 empty\n  val21 val22 empty\n  val31 val32 empty\n
    stream step 3: val11 val12 val13\n  val21 val22 val32\n  val31 val32 val33\n

我试图获得的东西自然可以通过例如将每列存储在std :: vector或类似物中,然后循环打印到流。但是,在我的情况下,每列都有n_choose_k值,我希望我的应用程序不要太快耗尽内存。

第三个选项当然是将每个列存储在某个缓冲区文件中或单独的ofstream中以抵消RAM,然后在最后进行某种合并。

关于潜在的预分配,我事先知道每列中的元素数量。

0 个答案:

没有答案