读书人

hash地图 set 几十万记录 重建索引

发布时间: 2012-10-08 19:54:56 作者: rapoo

hashmap set 几十万记录 重建索引?
在项目中碰到问题是用hashmap插入了26万多数时,会停十几分钟,跟踪发现是stl中的 _Init正在删除_vec,这步操作看上去应该是正在扩容及重建索引,我想知道当我能预知到我的记录数为数十万时,可以对stl的hashmap或set设定它的容量大小吗?或者有什么其它的设定吗?

[解决办法]
应该是hashmap正在扩容桶列表, 并将原有每个桶内结点散列到新的桶列表里.

这个东西真没办法避免了, hashmap是为了保证每个桶内链表不会太长, 所以会定期的增加更多的桶并做数据重散列.

读书人网 >C++

热点推荐