关联式容器面试题合集

本文探讨了关联式容器如vector, list, map, set, multimap, multiset等在面试中常见的问题。分析了map与set的区别,强调了set的特性,指出map的键不可变但值可修改。同时,解释了map的底层实现为红黑树,并讨论了红黑树的优势及在插入和旋转操作中的行为。还提到了迭代器在删除操作后可能失效的情况,以及AVLTree与RBTree的对比,说明了为何选择红黑树作为map的底层数据结构。" 54380259,1510383,解决Linux C编程中'exit'函数隐式声明警告,"['Linux开发', 'C语言', '编译错误', '程序调试', '系统调用']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 说说你所知道的容器都有哪些?

vector,list,map,set,mulimap,muliset等等

  1. map与set的区别?使用map有哪些优势?

set是一种关联式容器,其特性如下

  • set以RBTree作为底层容器
  • 所得元素的只有key没有value,value就是key
  • 不允许出现键值重复
  • 所有的元素都会被自动排序
  • 不能通过迭代器来改变set的值,因为set的值就是键

map和set一样是关联式容器,它们的底层容器都是红黑树,区别就在于map的值不作为键,键和值是分开的。它的特性如下

  • map以RBTree作为底层容器
  • 所有元素都是键+值存在
  • 不允许键重复
  • 所有元素是通过键进行自动排序的
  • map的键是不能修改的,但是其键对应的值是可以修改的
  1. map的底层原理,说下红黑树?

底层容器是红黑树,再详细说一下红黑树

  1. map的迭代器会失效吗?什么情况下会失效?

会失效,删除erase的时候会失效,it迭代器被删除后,it就会失效,找不到下一个了。要用一个临时变量记住it++

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值