分类: C++面试八股文
2.17、map 的 insert 和 emplace 区别?
1. 基本定义和语义区别
• insert
• 需要传入一个已经构造好的元素(通常是std::pair<const Key, T>),然后将其复制或移动到map内部。
• 元素先在外……
2.16、list 和 forward_list 的区别?
std::list 与 std::forward_list 的本质区别
• 数据结构类型
• std::list:基于 双向链表(doubly linked list) 实现,每个节点包含指向前后两个节点的指……
2.15、数组和链表的区别
存储结构和内存分配
• 数组
在内存中是连续分配的一块空间,所有元素紧密排列,支持通过索引随机访问,时间复杂度为 O(1)。这种连续性带来了良好的缓存局部……
2.14、hashtable的实现原理
Hashtable 的实现原理
Hashtable 的实现原理本质上是利用哈希函数(hash function)将关键字映射到数组的索引位置,从而实现快速的插入、查找和删除操作。
1. ……
2.13、set的底层实现为什么不用哈希表而是用红黑树
1. std::set的设计目标:有序且唯一的元素集合
std::set是一个有序关联容器,它不仅保证元素唯一,还保证元素按照严格弱序(默认是升序)排列,用户可以通过……
2.12、remove 和 erase 区别
1. rem)ove和erase的本质区别
remove
• 作用:重新排列容器中的元素,将不需要删除的元素移动到序列前部,返回指向“新末尾”的迭代器。
• 关键特性:
• 不真……
2.11、map 底层为什么用红黑树而不是平衡二叉树(AVL)?
std::map 底层采用红黑树而非 AVL 树的原因分析
1. 红黑树与 AVL 树的平衡策略差异
• AVL 树:高度平衡二叉搜索树,要求任意节点左右子树高度差 ≤1,查询时……
2.10、说一说红黑树?
红黑树概述
红黑树是一种自平衡的二叉查找树(BST),其核心特点是在普通二叉查找树的基础上,每个节点额外带有颜色属性(红色或黑色),通过对节点颜色的约……
2.9、什么时候用map,什么时候用hash_map?
数据结构与底层实现差异
std::map
• 底层结构:基于**红黑树(自平衡二叉搜索树)**实现
• 元素顺序:按键的严格弱排序规则自动排序,支持顺序遍历
• 时间复……
2.8、说一说你了解的优先级队列?
它本质上是基于堆(heap)数据结构实现的,主要特点是每次访问的元素都是当前队列中优先级最高的元素,而非先进先出(FIFO)规则。
关键特性与实现原理
底层……