【面试】C++

1.hashmap底层实现和哈希表冲突解决方案

hashmap的底层实现是红黑树。

2.map按key查找的时间复杂度为?

map 和 multimap都是由RB_tree(红黑树)来实现的,本就合适于查找,复杂度为 O( ln(N) )

UNordered_set ,unordered_map是由hash_table(哈希表)来实现的,时间复杂度为o(1).

deque的push_back, push_front, pop_back, pop_front操作时间复杂度为O(1)

堆栈区别

堆和栈的区别:
一、堆栈空间分配区别:
1)、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;
2)、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。
二、堆栈缓存方式区别:
1)、栈使用的是一级缓存,他们通常都是被调用时处于存储空间中,调用完毕立即释放;
2)、堆是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。
堆:内存中,存储的是引用数据类型,引用数据类型无法确定大小,堆实际上是一个在内存中使用到内存中零散空间的链表结构的存储空间,堆的大小由引用类型的大小直接决定,引用类型的大小的变化直接影响到堆的变化
栈:是内存中存储值类型的,大小为2M,超出则会报错,内存溢出
三、堆栈数据结构区别:
堆(数据结构):堆可以被看成是一棵树,如:堆排序;
栈(数据结构):一种先进后出的数据结构。
特点:先进后出

你可能感兴趣的:(【面试】C++)