0

テキスト ファイルから入力を読み取り、それを 2 次元配列に入力するプロジェクトに取り組んでいます。すべてのサイズで機能させたい場合は、ベクターを使用する必要があります。もしそうなら、私は 2d ベクトルの構文について混乱しています。

または、動的配列を使用する必要がある場合は、以前に作業したことがないので、それについてアドバイスしてもらえますか。// これはテキスト ファイルから入力を読み取り、各行の各単語を配列に挿入します

ifstream file(argv [1]);
int length = atoi(argv[2]);
int grid [20][20];
int row = 0, column = 0;

string line;
while(getline (file, line)) {
     istringstream stream(line);

     int x;
     column = 0;
     while(stream >> x) {
         grid[row][column] = x;
         column++;
     }

     row++;
}

私の主な混乱は、2次元ベクトルまたは配列のどちらを使用するか、そしてそうであれば、それを開始する方法です

4

1 に答える 1

1

配列の最初の宣言 (および構築) を次のように変更します。

int grid [20][20];

vector<vector<int>> grid; // Now the size is 0x0

grid[row][column] = x;次に、新しい値を内部配列 (ベクトル)に追加するように変更しますgrid.back().push_back(x);

そしてrow++grid.push_back(vector<int>());

変数がまったく必要ないわけではありませんrowcolumn


std::vector使用法に変換された完全なコード

ifstream file(argv [1]);
int length = atoi(argv[2]);
vector<vector<int>> grid;
string line;
while(getline (file, line)) {
     istringstream stream(line);
     grid.push_back(vector<int>());

     int x;
     while(stream >> x) {
         grid.back().push_back(x);
     }
}
于 2013-08-14T20:29:38.547 に答える