作者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