分类: 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)规则。 关键特性与实现原理 底层……