[問題] Hash reset()

看板EE_DSnP作者 (vin)時間12年前 (2012/01/14 11:12), 編輯推噓1(1010)
留言11則, 2人參與, 最新討論串1/1
因為怕自己有想錯 所以想請教大家一下 關於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

01/14 11:17, , 1F
整份hashdata砍掉就好 就跟你用vector的感覺一樣
01/14 11:17, 1F

01/14 11:17, , 2F
hash裡面的東西應該都是一份copy
01/14 11:17, 2F

01/14 11:22, , 3F
砍掉是只說clear()掉即可?另外想請問一下它是copy進來的
01/14 11:22, 3F

01/14 11:22, , 4F
嗎?因為我看它insert進來或是傳到pair裡都是用&的方式?
01/14 11:22, 4F

01/14 11:23, , 5F
感激~~
01/14 11:23, 5F

01/14 11:26, , 6F
傳&可是你call vector.push_back他就幫你copy一份丟進去了啊
01/14 11:26, 6F

01/14 11:26, , 7F
傳&可是你call vector.push_back他就幫你copy一份丟進去了啊
01/14 11:26, 7F

01/14 11:26, , 8F
噢不 按了兩次= =
01/14 11:26, 8F

01/14 11:28, , 9F
噢噢 原來 感謝!!!
01/14 11:28, 9F

01/14 11:29, , 10F
我自己reset是把整份_bucket砍掉啦 因為distructor有call他
01/14 11:29, 10F

01/14 11:37, , 11F
恩恩 感激 之前誤以為vector存的是data的ref了 蠢了
01/14 11:37, 11F
文章代碼(AID): #1F4FADfv (EE_DSnP)