读书人

求解释红色一部分那两段代码什么意思

发布时间: 2012-10-24 14:15:58 作者: rapoo

求解释,红色部分那两段代码什么意思?
void Cross(int type,vector<vector<Lujing> > &lujing){
int dot=0;
float odds=0;
vector<Lujing>::iterator iter1,iter2;
for(int num=0;num<lujing.size()-1;num++){
odds=rand()%100/100.0;
if(odds>=0.5&&odds<=0.9){
dot=NormalRandom(0, 0.2,1,type);
iter1=lujing[num].begin() +dot-1;
iter2=lujing[num+1].begin()+dot-1;
while(iter1!=lujing[num].end()){
swap(*iter1,*iter2);
iter1++;
iter2++;
}
}
}
}



[解决办法]
iter1=lujing[num].begin() +dot-1;
迭代器iter1指向lujing[num]第dot个数据
[解决办法]
一层一层剥开来看:
首先由函数参数可以明确,lujing是vector的vector,即vector<vector<>>,
由for循环可以知道lujing[num]是取的里面的vector<>,
然后.begin()就是迭代器的第一个元素,
最后+dot-1,即lujing[num]的第dot个元素。
[解决办法]
矩阵元素
iter1=第num+1行,第dot列的Lujing
iter2=地num+2行,第dot列的Lujing

读书人网 >C++

热点推荐