push_back无法正常工作

时间:2017-10-09 08:10:08

标签: c++ vector push-back

我用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不起作用!!

0 个答案:

没有答案