在回圈中移除和增加vector的問題 |
答題得分者是:malanlk
|
achillean
一般會員 ![]() ![]() 發表:16 回覆:23 積分:7 註冊:2004-08-13 發送簡訊給我 |
Question 1: http://delphi.ktop.com.tw/topic.php?topic_id=20390
參考過後這篇
只是在內文中間的delete *i
我以為應該是delete i ,因為i本身已經是指標
請前輩指點 Question 2: struct FaceArea{
vertx verts[3]; //點的自訂結構內有X,Y,Z座標
int verts_id[3]; //點的編號
float area; //面積
};//一個面三點構成 vector
for(unsigned i=0;i補充說明原本回圈中的元素我是用vector |
malanlk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:20 回覆:694 積分:577 註冊:2004-04-19 發送簡訊給我 |
Question 1 i 的內容也是指標, 指向 某ㄧ元素的位址
而要刪除的是 該元素 所以是 delete *i Question 2 1. List 配置出來的空間並不是連續的, 你用 Array 來操作 List 得到 Access violation access 是應該的.....
List 的 ++, -- 運算應該是在做 Next, Prior 的動作, 而不是 Array 的單純位址位移....
2. "所以移除元素的時候我是用Vec_GDFArea.erase(it--)"
為什麼要放 "--" ? 當你做erase(it) 時 這個項目就被丟掉了, 如何 Prior? 而且用 erase 會
// 要不然得馬上 break,否則 i 的值馬上變成無效值 // i 就會出問題3 .如果照 delete *i; *i=NULL; 的概念, 只要將 *i 所指的元素 delete 掉就是收回 元素所佔用的記憶體, 接著再挪向下一個iterator做就可以了... |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |