作者vincere (vin)
看板EE_DSnP
標題[問題] Hash reset()
時間Sat Jan 14 11:12:10 2012
因為怕自己有想錯
所以想請教大家一下
關於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
1F:→ wmin0:整份hashdata砍掉就好 就跟你用vector的感覺一樣 01/14 11:17
2F:→ wmin0:hash裡面的東西應該都是一份copy 01/14 11:17
3F:→ vincere:砍掉是只說clear()掉即可?另外想請問一下它是copy進來的 01/14 11:22
4F:→ vincere:嗎?因為我看它insert進來或是傳到pair裡都是用&的方式? 01/14 11:22
5F:→ vincere:感激~~ 01/14 11:23
6F:推 wmin0:傳&可是你call vector.push_back他就幫你copy一份丟進去了啊 01/14 11:26
7F:→ wmin0:傳&可是你call vector.push_back他就幫你copy一份丟進去了啊 01/14 11:26
8F:→ wmin0:噢不 按了兩次= = 01/14 11:26
9F:→ vincere:噢噢 原來 感謝!!! 01/14 11:28
10F:→ wmin0:我自己reset是把整份_bucket砍掉啦 因為distructor有call他 01/14 11:29
11F:→ vincere:恩恩 感激 之前誤以為vector存的是data的ref了 蠢了 01/14 11:37