STL标准库常见面试题(一)

本博客内容:
参考:https://blog.csdn.net/tianya_team/article/details/50753759
https://www.cnblogs.com/wulala1119/p/4758345.html
一、vector的底层(存储)机制
二、vector的自增长机制
三、list的底层(存储)机制
四、什么情况下用vector,什么情况下用list
五、list自带排序函数的排序原理
六、deque的底层机制
七、deque与vector的区别
八、map底层机制,查找复杂度,能不能边遍历边插入
九、vector插入删除和list有什么区别
十、hashtable如何避免地址冲突
十一、hashtable、hash_set、hash_map的区别
十二、hash_map与map的区别、什么时候用它们两个?
十三、红黑树有什么性质?
十四、map和set的3个问题
十五、为什么vector插入操作可能导致迭代器失效
十六、hashtable和hashmap的区别
十七、STL底层数据结构实现
十八、STL提供哪六大组件?
十九、auto_ptr可以做vector的元素吗?为什么?
二十、简单说一下next_permutation和partition的实现?
二十一、不允许有遍历行为的容器有哪些?(不提供迭代器)

一、vector的底层(存储)机制

  vector就是一个动态数组,里面有一个指针指向一片连续的内存空间,当空间不够装下数据时,会自动申请另一片更大的空间(一般是增加当前容量的50%或100%),然后把原来的数据拷贝过去,接着释放原来的那片空间;当释放或者删除里面的数据时,其存储空间不释放,仅仅是清空了里面的数据。

二、vector的自增长机制

  当已经分配的空间不够装下数据时,分配双倍于当前容量的存储区,把当前的值拷贝到新分配的内存中,并释放原来的内存。
  对vector的任何操作,一旦引起空间重新配置,指向原vector的所有迭代器就都失效了。

三、list的底层(存储)机制

  以结点为单位存储数据,结点的地址在内存中不一定连续,每次插入或者删除一个元素,就配置或者释放一个元素空间。

四、什么情况下用vector,什么情况下用list

  vector可以随机存储元素(即可以通过公式直接计算出元素地址,而不需要挨个查找)ÿ

  • 8
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值