C_and_CPP 板


LINE

開發平台(Platform): (Ex: Win10, Linux, ...) win10 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) GCC 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) <vector> 問題(Question): 因為第一次使用vector (作業需要 想要做到的事情是 我有類似4個Set ex: vector<Zone> Target0,Target1,Target2,Target3 Zone裡面的struct存了一些資料 struct Zone{//此為各網格之struct int row; int col; int id; int status; bool isB;}; 每次判斷後set會移動 舉例:一開始所有值都在Target0 中 Target0={0,1,2,3,....23} 其他Target1,2,3都是 NULL 假設做完一個interation後 要使 3 從 target0 移到 target1 要怎麼樣最好呢 ex:Target0={0,1,2,3,....23}-{3} = {0,1,2,4....,23} Target1={3} 程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔) //先把所有值放到Target0 for(i=0;i<M;i++) for(j=0;j<N;j++){ Zone* node=new Zone; node->row=i; node->col=j; node->id=i*N+j; if(SMap[i][j]==1){ node->isB=1; }else {node->isB=0;} node->status=0; Target0.push_back(*node); } //想把 Target0 的 第id個值 移到 Target3中 vector<Zone>::iterator it, end; //建立for迴圈要用的疊代器(?) 不確定是不是這樣 id=(row-1)*N+col; //計算id Zone* node=Target0.[id]; //將Target中 的第id個值存到node中 Target3.push_back(node); //將node放入target3中 for(it=Target0.begin(); it!=Target0.end(); ++it)//在target0中找第id個值 if(it->id==id) it = Target0.erase(it) //如果找到 把第id個值刪掉 這是我目前的想法 但compile下來會到一半就卡住了 另外想請問 如果要取Target4中的最後一個值來使用 (之後要pop_back if(Target4.empty==0){ //Target4 非空 vector<Zone>::iterator now=Target4.end()-1; row=now->row; col=now->col; id=row*N+col; } 用這樣的方式對嗎 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.23.107
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1525871601.A.A04.html
1F:→ KanzakiHAria: 請學會使用debugger 05/09 21:45
2F:→ shadow0326: compile卡住是指compile error? 那請貼上錯誤訊息 05/09 23:32
3F:→ shadow0326: 然後在forloop裡erase不能這樣寫 05/09 23:34
4F:→ shadow0326: 隨便找個參考寫法給你 https://tinyurl.com/yat9fzsm 05/09 23:35
感謝s大 後來發現是erase時會卡住 for(it=Target3.begin(); it!=Target3.end(); ){ if(it->id==id){ it=Target3.erase(it); break; } else ++it; } 改成類似這樣就可以了 不加break的化 會一直重複迴圈QQ ※ 編輯: qazwsx879345 (114.44.69.142), 05/10/2018 04:30:05 ※ 編輯: qazwsx879345 (114.44.69.142), 05/10/2018 04:30:16
5F:→ taies: 可以試著用std::find_if幫找vector裡的東西 05/10 08:18
6F:→ Jockey66666: 用earse加std::remove_if就不用for loop了 05/10 09:30
謝謝大家的建議,我會用一些簡單的例子試試看 ※ 編輯: qazwsx879345 (114.44.69.142), 05/10/2018 11:21:13







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP