我用vector.push_back得到了一些奇怪的东西...... 我写了一个循环
while(size = getSectionSize(inputFile) ){
data->at(k).resize(size*3) ;
sizes.push_back(size) ;
cout << "sizes at k = "<< k << " = " << sizes.at(k) << endl;
double val;
int j=0;
while(getline(inputFile,row) && j < size){
istringstream elem(row);
for(int i=0; i < 3; i++)
//elem >> data->at(k).at(j).at(i);
elem >> val ;
data->at(k).at(j).push_back(val);
elem >> tmp ; // 4th columns to skip
j++;
}
但我得到了
terminate called after throwing an instance of 'std::out_of_range'
...相反,如果我在循环中写入
for(int i=0; i<size; i++) // resize vector !
data->at(k).at(i).resize(3) ;
然后用push_back从文件中读取数据,程序运行正常 但如果我试着写出数据我得到了很多0 0 0(这应该与调整大小增加2 *大小...而不仅仅是大小的事实有关)
所以我必须使用可怕的:
elem >> data->at(k).at(j).at(i);
这样一切顺利!但我会理解为什么没有先前调整大小的push_back不起作用!!