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");
  }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值