看板 EE_DSnP 關於我們 聯絡資訊
※ 引述《XDucka (Duck)》之銘言: : for_each(fecGrp, fecGrps): : Hash<SimValue, FECGroup> newFecGrps; : for_each(gate, fecGrp) : grp = newFecGrps.check(gate); : if (grp != 0) // existed : grp.add(gate); : else createNewGroup(newFecGrps, gate); : CollectValidFecGrp(newFecGrps, fecGrp, fecGrps); : 有一點小看不太懂 所以憑感覺寫: : createNewGroup -> new一個vector把那個gate塞進去然後再把這個vector的指標 : forceInsert到Hash裡 可以這麼說 : CollectValidFecGrp -> 看他們的size是不是2以上 是的話把這個grp push_back : 到當前的fecGrps 小於2的話立馬 delete (<---雖然gdb不是說錯在這行 但是可以在 : 這邊就delete嗎@@?會不會造成下面這行的錯誤@@?) : 然後外面還要把newFecGrp push_back進來之前的fecGrps都delete掉(<----gdb就說在這邊 : 有invalid pointer 可能是哪邊不能delete呢@@?) : 這樣delete還有沒有可能哪邊有memory leak呢@@? 大致上是對的,但不要忘記有個東西叫 swap(),可能會乾淨一些 XD : 今天下午原本用vector<vector<CirGate*>*> : 但是把某些new出來的vector delete掉的時候 : 會出現許多種不同的segement fault : 所以想說先跑出來再說 改成用vector<vector<CirGate*> > .... : 結果跑小小電路的時候對是對了=.= : 但是晚上測sim13發現不但跑超久 而且記憶體花了1G....(下定決心要重來...) : 結果剛剛才被前年的文章雷到 早知道早點被雷>.< : 看來明天還是回去用vector<vector<unsigned>*>來砍掉重練一次好了 我都忘記有這個雷文了,哈哈... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.160.39.57
XDucka:教授又有一個小問題>,<是一定要看懂solver.h跟solver.cpp才 01/14 01:19
XDucka:能去控制sat做到一半放棄嗎@@ 01/14 01:20
ric2k1:說實在的,如果對 SAT 沒有一點概念其實有點難改 01/14 01:26
ric2k1:不過有概念之後其實也就不難改了... 01/14 01:27
ric2k1:倒也不用完全看懂 Solver.cpp,但對於 SAT 的演算法要懂 01/14 01:28
XDucka:再問一個小問題>,< 每個fec group的第一個 都不要有!嗎 01/14 13:34
yuting1105:yes 01/14 13:48
yuting1105:不過cirg <num>的時候,有沒有!是看該ID的simVal和<num> 01/14 15:43
yuting1105:的simVal是否反向 01/14 15:43
XDucka:對欸=.= 01/14 16:01