面经:hash table 和 virtual

对比hash table 和 STL map 。

1:hash table中,由hash函数产生一个值作为key,因此hash table中不是有序的存储 , 并且对于查找和插入操作是O(1)的复杂度,必须掌控有效的碰撞,以上是对于在哈希表中只有少数碰撞的情况。

2:STL map中,key/value对的插入是以key的顺序来排列的,用树来存储,这样的话查找和插入的复杂度是O(logN),所以不必考虑碰撞,STL map对如下情况处理的很好:

* 找最小元素

* 找最大元素

* 按序打印元素

* 精确地查询元素,如果不存在找到比他小的下一个元素

3:hash table 如何实现

* 一个好的hash函数来确保产生的value是均匀分布的。

* 一个好的碰撞解决方法: 链接(稠密表) , 探讨(稀疏表)  |   chaining(sparse),probing(dense)

* 实现在给定标准下动态的增,减hash table的尺寸:例如,当元素数量 / 哈希表尺寸 大于固定阙值时(the fixed threshold),通过创建新表并将旧表中的实体转移,来增加哈希表的尺寸。

ps:英文对于知识的理解比中文好,关键字的理解!


c++中virtual函数是如何工作的

虚函数依赖虚表。如果类中函数被定义为虚函数,创建虚表存储该类虚函数的地址。编译器在所有这样的类中添加一个隐藏的指针变量(vptr)指向该类的虚表。如果虚函数不被派生类重写,派生类的虚表中函数的地址是派生类的父类。虚表被用来存储函数的地址,来决定虚函数合适被调用,c++的动态绑定用虚表来实现。

当我们通过基类指针给派生类对象分配空间时,vptr指向派生类的虚表,能保证派生的虚函数被调用。



由虚函数引出的问题,构造函数能否使虚函数,析构函数能否虚函数?

(构造不是,析构是,为了将两个对象都释放)






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值