2

私の問題は、2次元ベクトルをテキストファイルに書き込む方法です。

私はすでにここのトピックに従っています、そしてここに私の必要性に少し変更された私のコードがあります:

ofstream output_file("example.txt");
ostream_iterator<int> output_iterator(output_file, "\t");
for ( int i = 0 ; i < temp2d.size() ; i++ ) 
copy(temp2d.at(i).begin(), temp2d.at(i).end(), output_iterator);

私の質問は、ベクトルを行ごとにファイルに書き込む方法です。

これが私が欲しいものです:

22 33 44
66 77 88
88 44 22

等々。

このコードは、ベクトルのすべての要素を同じ行に書き込みます。

ありがとう。

4

3 に答える 3

1

行をコピーしたら、つまりforループの最後に改行文字を出力します。

for(...)
{
  : // other code
  output_file << '\n';
}
于 2012-07-23T10:29:59.290 に答える
1

私はあなたがC++11を持っています、あなたは次のようなことをすることができます:

std::vector<std::vector<int> > v;

//do with v;

for(const auto& vt : v) {
     std::copy(vt.cbegin(), vt.cend(),
           std::ostream_iterator<int>(std::cout, " "));
     std::cout << '\n';
}

他の賢明なtypdefはあなたの友達です。

typedef std::vector<int> int_v;
typedef std::vector<int_v> int_mat;
int_mat v;

for(int_mat::const_iterator it=v.begin(); it!=v.end(); ++it) {
     std::copy(vt->begin(), vt->end(),
           std::ostream_iterator<int>(std::cout, " "));
     std::cout << '\n';
}
于 2012-07-23T10:38:27.357 に答える
1

それは1つの方法です:

#include <vector>
#include <iostream>

int main(){
  std::vector<std::vector<int> > vec;

  /* fill the vector ... */

  for(const auto& row : vec) {
    std::copy(row.cbegin(), row.cend(), std::ostream_iterator<int>(std::cout, " "));
  std::cout << '\n';
  }

  return 0;
}

でコンパイルしgcc --std=c++0x test_vector.ccます。

于 2012-07-23T10:42:33.840 に答える