3

2次元ベクトルの場合、演算子[]を使用することは可能ですか? たとえば、次のコードを取得しました。

vector<vector<string>> data;

ifstream myReadFile;
myReadFile.open("stoixeia_astheni.txt");


while (!myReadFile.eof()) {

    for(int i=0; i<1; i++){
        for (int j=0; j<4; j++){
            myReadFile  >> data[i][j];
        }
    }

}

範囲外のメッセージを受け取りました。5 行 4 列のファイルがあります。

4

1 に答える 1

6

ベクトルdataは空で、size()0です。resize最初にベクトルを追加するか、次を使用して新しい要素を追加する必要がありpush_back()ます。

while (!myReadFile.eof()) {    
    for(int i = 0; i < 1; i++){
        vector<string> tmpVec;
        string tmpString

        for (int j = 0; j < 4; j++){
            myReadFile  >> tmpString;
            tmpVec.push_back(tmpString);
        }
        data.push_bac(tmpVec);
    }
}

次の宣言でサイズを正しく設定することもできますdata

vector<vector<string>> data(5,vector<string>(4));

ifstream myReadFile;
myReadFile.open("stoixeia_astheni.txt");

while (!myReadFile.eof()) {

    for(int i=0; i < 5; i++){
        for (int j=0; j<4; j++){
            myReadFile  >> data[i][j];
        }
    }

}
于 2012-06-07T21:09:48.717 に答える