C++ 读取vector中数据出错

此前在编程过程中使用vector时,分配了一个含有100个里层容器,且每个里层容器可存放100个元素的空间,定义的方式如下:

vector<vector<float>> shape(100,vector<float>(100));该定义方式是按照语法定义的,并无问题。

括号中第一个100是指定义的子容器(里层容器)的数量,括号中的vector<float>(100)是指每个里层容器中可存放100个元素;

但是,问题来了!

该方式中一个子容器可放100个元素,但是会读出200个值,当然这200个值中也包含了正确的值;可这并不是我们想要的。

解决方式:

采用语句  vector<vector<float>> shape(100);

//定义子容器数量为100个

以下是向shape的100个子容器中存放数据,每个子容器中存放120个元素

for(j=0 ; j<100 ; j++)
{
for(i=0 ; i<100 ; i++)
   {
    fread( &ss , sizeof (float) , 1 , fid7 );      
shape[j].push_back( ss );
   }
}

以下程序是对刚才向shape中存放的数据进行读取,该方式适用于读取vector中数据,可根据实际情况修改代码,
vector<float> temp;
    for(vector<vector<float>>::iterator it=shape.begin();it!=shape.end();++it)    //二维Vertor的读取(即输出)
   { 
  temp=*it;
      for(vector<float>::iterator itt=temp.begin();itt!=temp.end();++itt)
              printf("%  .4f  ",*itt);
  printf("\n\n");
  }


猜你喜欢

转载自blog.csdn.net/czy47/article/details/80944438