此前在编程过程中使用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");
}