我在存儲Point數據類型元素[x,y]的向量上進行迭代,並且我想在每次迭代中實現的是添加第一個4點x元素和前4個點y元素....在下一次迭代期間,我希望與下一個4 x & y ......相同,等等迭代遍歷一個向量時的運行時錯誤
第1次迭代1.x + 2.x + 3.x + 4.x 1.y + 2.y + 3.y + 4.y
第2次迭代5.x + 6.x + 7.x + 8.x 5.y + 6.y + 7.y + 8.y
等.... .................希望我的問題是清楚的
示例代碼:
double Pta;
double Ptb;
Point vect;
float R1, R2;
float resultant;
vector<Point> vect_add;
for(vector<Point>::iterator iter_a = Left_Arm_xy.begin()+1; iter_a != Left_Arm_xy.end(); ++iter_a)
{
if(center.y <= 240)
{
vect.x = iter_a->x - (iter_a -1)->x;
vect.y = iter_a->y - (iter_a -1)->y;
vect_add.push_back(Point(vect.x,vect.y));
for(vector<Point>::iterator iter_v = vect_add.begin(); iter_v != vect_add.end(); ++iter_v)
{
R1 = iter_v->x + (iter_v +1)->x + (iter_v +2)->x + (iter_v +3)->x;
R2 = iter_v->y + (iter_v +1)->y + (iter_v +2)->y + (iter_v +3)->y;
resultant = sqrt(pow(R1,2) + pow(R2,2));
cout<<"Resultant: "" "<<resultant<<endl;
}
}
當我彗星在哪裏我想添加的所有部分x的和y的程序工作正常,就像以前一樣.....因此,問題必須在那裏..我猜語法不對,但我不是最好的程序員,不能這樣做什麼錯,因爲沒有編譯器警告....程序崩潰只是在運行時
誰能可能看到我在做什麼毛病此代碼 問候
調試:
對不起,只是增加調試斷點的照片,但我認爲圖片是值得1000個字在這種情況下:P
你懷疑'vect_add.size()> 4'是什麼意思? – 2013-04-11 03:52:23
如果此矢量內有超過4個元素,則在此if語句中繼續並執行代碼 – Tomazi 2013-04-11 03:54:10
您是對的。所以如果'vect_add.size()'是3,那麼這個代碼永遠不會運行。如果'vect_add.size()'是5,它將運行5次。這與您對該計劃的描述不符。 – 2013-04-11 04:00:15