看板 EE_DSnP 關於我們 聯絡資訊
因為怕自己有想錯 所以想請教大家一下 關於Hash 的 reset() 有爬過文知道是要用iterator traverse每個node並把他們delete掉 我push到_buckets[i]裡的是HashNode而不是HashNode的pointer 而pair裡HashData的pointer是insert時由reference的方式傳進來的 所以我delete掉HashNode的data以後 是否會造成外面有其他pointer還指著某個資料 可是卻因我delete而使得這個資料也被還回去的情況? (有弄錯麻煩大家指正) 因此我在reset()的時候是否能直接做_bucket[i].clear()的動作? 而不需要iterator一個一個去delete掉? 感謝大家了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.25.108
wmin0:整份hashdata砍掉就好 就跟你用vector的感覺一樣 01/14 11:17
wmin0:hash裡面的東西應該都是一份copy 01/14 11:17
vincere:砍掉是只說clear()掉即可?另外想請問一下它是copy進來的 01/14 11:22
vincere:嗎?因為我看它insert進來或是傳到pair裡都是用&的方式? 01/14 11:22
vincere:感激~~ 01/14 11:23
wmin0:傳&可是你call vector.push_back他就幫你copy一份丟進去了啊 01/14 11:26
wmin0:傳&可是你call vector.push_back他就幫你copy一份丟進去了啊 01/14 11:26
wmin0:噢不 按了兩次= = 01/14 11:26
vincere:噢噢 原來 感謝!!! 01/14 11:28
wmin0:我自己reset是把整份_bucket砍掉啦 因為distructor有call他 01/14 11:29
vincere:恩恩 感激 之前誤以為vector存的是data的ref了 蠢了 01/14 11:37