У меня возникли проблемы с доступом к сохраненным удвоениям в моем векторе < vector < * double >>. Я читаю .txt-файл и сохраняю сохраненные в нем значения (которые должны составлять матрицу) в векторе векторов.Доступ вектора векторов <double*>
vector <vector<double*>> HypMean;
ifstream myFile;
myFile.open(nameOfFile);
if (myFile.is_open() && myFile.good()) {
string line;
while(getline(myFile, line)){ //Get line-by-line in file
istringstream buffer(line);
string value;
int numLoop = 0;
vector <double*> tempVector;
while (getline (buffer, value, ',')){ //Get character by character in line
istringstream valuebuffer(value);
tempVector.push_back(new double[1]);
valuebuffer >> *(tempVector.back() + numLoop);
cout << *(tempVector.back() + numLoop) << " ";
numLoop++;
}
HypMean.push_back(tempVector);
cout << endl;
}
myFile.close();
}
Это моя функция, и я предполагаю, что я спасаю значение права, поскольку, когда я напечатав «tempVector» при его создании, и она работает.
0.014872 0.078519 0.071838 -0.10371
-0.16741 -0.0063904 0.0018366 0.21238
0.13796 -0.29323 0.23489 -0.074523
Однако, когда я пытаюсь получить доступ ко всему предмету (HypMean), я не знаю, как это сделать. Я попытался следующие без везения:
for (int x=0; x<3; x++){
for (int y=0; y<4; y++){
cout << *(HypMean[x][y]) << " ";
}
cout<<endl;
}
0.014872 -6.27744e+66 -6.27744e+66 -6.27744e+66
-0.16741 -6.27744e+66 -6.27744e+66 -6.27744e+66
0.13796 -6.27744e+66 -6.27744e+66 -6.27744e+66
Любые идеи, пожалуйста? Что я должен изменить, чтобы получить доступ к нему должным образом? Спасибо заранее!
Почему «новый двойной [1]' ?? Почему бы не просто 'vector> HypMean;' ?? –
Да, использование 'new' здесь совершенно лишнее. Кроме того, использование массива 'new' для выделения одного элемента не имеет смысла. Если у вас есть фон на C# или Java, не используйте их стиль использования 'new' в C++! –