面试真题

C++ · 中等 · Momenta

map的两种扩容方式

中等 C++ 🎤 Momenta
参考答案
结论:std::map基于红黑树,无容量扩容概念,节点动态创建;若指unordered_map,其扩容方式为rehash,常见两种策略:桶数组翻倍(2的幂)或按质数序列递增。原理:map是节点式容器,插入新元素直接分配节点并旋转平衡,不涉及连续内存重分配;unordered_map维护桶数组和负载因子,当元素数/桶数>max_load_factor时触发rehash,重新分配更大桶数组并将所有元素重新哈希到新桶;翻倍扩容实现简单且缓存友好,质数扩容可减少哈希冲突聚类。示例:unordered_map<int,int> m; m.max_load_factor(1.0); 插入元素达到阈值后桶数从8变16。
题目整理自公开面经,答案由校招宝自研生成,仅供参考