Boost ublas 行列があり、その内容をテキスト ファイルに出力したいと考えています。次の実装があり、動作します。
#include <iostream>
using namespace std;
#include "boost\numeric\ublas\matrix.hpp"
typedef boost::numeric::ublas::matrix<float> matrix;
#include <algorithm>
#include <iterator>
#include <fstream>
int main()
{
fill(m1.begin2(), m1.begin2() + 400 * 500, 3.3);
ofstream dat("file.txt");
for (auto i = 0; i < 400 ; i++) {
for (auto j = 0; j < 500; j++) {
dat << m1(i, j) << "\t"; // Must seperate with Tab
}
dat << endl; // Must write on New line
}
ネストされた for ループを使用せずに、このコードを記述したいと考えています。次のように ostreambuf_iterator API を試しました
copy(m1.begin2(), m1.begin2() + 500 * 400, ostream_iterator<float>(dat, "\n")); // Can only new line everything
ただし、ご覧のとおり、連続する要素は新しい行に記述されており、ネストされた for ループで行ったような順序付けのタイプを実現できませんでした。STLアルゴリズムを使用するためにネストされた内部で行ったことを行う方法はありますか?