1

C++ stl を使用して 2 次元配列をスキャンしたいと考えています。これが私がやっている方法です。何が問題なのか教えてください。

int test;
scanf("%d\n",&test);
VVI all_integers;
while(test--)
{
  all_integers.push_back(VI(istream_iterator<int>(cin),istream_iterator<int>()));
}

サンプル入力:-

4
1 2 3 4 5
1 2 3 4
1 2
1

ここで、test は後続の行数です。

4

2 に答える 2

-1

これが私の解決策です:

#include <iostream>
#include <vector>
#include <iterator>
using namespace std;

int main(){
  int k;
  cin >> k; cout << endl << "k = " << k << endl;
  ostream_iterator<int> oi(cout, " ");
  vector<vector<int> > vpi;
  while(k--)
  {
    vpi.push_back(vector<int>(istream_iterator<int>(cin), istream_iterator<int>()));
    cin.clear();
    cout<<"k = "<< k <<endl;
    copy(vpi[vpi.size()-1].begin(), vpi[vpi.size()-1].end(), oi);
    cout<<endl;
  }
}

Linux では、すべてのベクトルの後に < Enter >、< Ctrl >+< D > を使用して機能させる必要があります。(< Ctrl >+< D > は Linux では eof です。) < Enter > だけで動作させるには、望ましいことですが、getline() を使用して文字列バッファーを読み取り、次にバッファーから読み取る必要があります。

于 2012-12-13T10:41:37.870 に答える