Как правильно индексировать и очищать многомерный вектор - PullRequest
0 голосов
/ 29 мая 2019

Я работаю над фрагментом кода, который читает данные из файлов и должен сохранить эти данные в многомерном векторе. Данные хранятся в трех столбцах в каждом файле, и я сохраняю данные из каждого файла в двухмерном векторе. Затем мне нужно сохранить данные из всех файлов в трехмерный вектор, в котором третий индекс представляет количество файлов.

Я не уверен, что делаю это правильно, и мне хотелось бы получить какое-то руководство. Когда я печатаю содержимое вектора _data, я ожидаю, что он будет печатать в каждой итерации цикла только данные j-го файла, вместо этого он печатает все данные.

Должен ли я очищать _data после прочтения каждого файла? И если да, то как мне очистить _data?

Спасибо.

    vector< vector<double> > data(3);
    vector< vector< vector<double> > > _data;
    for (int i = 0; i < channels.size(); ++i){
        ifstream ifs(channels.at(i));
        if(!ifs){
            cerr << "File could not be found." << endl;
            exit(1);
        }
        else if(ifs.is_open()){
            string line;
            getline(ifs,line);
            while(ifs.good()){
                istringstream iss (line);
                double x;
                double y;
                double err;
                iss >> x >> y >> err;
                data[0].push_back(x);
                data[1].push_back(y);
                data[2].push_back(err);
                getline(ifs,line);
            }
            _data.push_back(data);
    }

    for ( int j = 0; j < channels.size(); ++j){
        for ( int i = 0; i < data[0].size(); ++i){
            cout << _data[j][0][i] << '\t' << _data[j][1][i] << '\t' << _data[j][2][i] << endl;
        }
        cout << "---------------" << endl;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...