C++知识

哈希表的冲突解决方式: 博客

开放定址法:

它基本思想是:当发生地址冲突时,按照某种方法继续探测哈希表中的其他存储单元,直到找到空位置为止。这个过程可用下式描述:
H i ( key ) = ( H ( key )+ d i ) mod m ( i = 1,2,…… , k ( k ≤ m – 1))
其中: H ( key ) 为关键字 key 的直接哈希地址, m 为哈希表的长度, di 为每次再探测时的地址增量。
采用这种方法时,首先计算出元素的直接哈希地址 H ( key ) ,如果该存储单元已被其他元素占用,则继续查看地址为 H ( key ) + d 2 的存储单元,如此重复直至找到某个存储单元为空时,将关键字为 key 的数据元素存放到该单元。
增量 d 可以有不同的取法,并根据其取法有不同的称呼:
( 1 ) d i = 1 , 2 , 3 , …… 线性探测再散列;
( 2 ) d i = 1^2 ,- 1^2 , 2^2 ,- 2^2 , k^2, -k^2…… 二次探测再散列;
( 3 ) d i = 伪随机序列 伪随机再散列;

散列表的载荷因子定义为: α=填入表中的元素个数/散列表的长度。
对于开放定址法,荷载因子是特别重要因素,应严格限制在0.7-0.8以下。超过0.8,查表时的CPU缓存不命中(cache missing)按照指数曲线上升。因此,一些采用开放定址法的hash库,如Java的系统库限制了荷载因子为0.75,超过此值将resize散列表。

拉链法

拉链法又叫开散列,首先将关键码根据哈希函数来计算出哈希地址,对相同的哈希地址放在某一子集合中,每个子集合叫做一个桶,每个桶放的都是哈希冲突元素,每个桶中的元素通过单链表连接,每个链表的头节点存放在哈希表中,这种结构叫做哈希桶。
在这里插入图片描述

常量指针与指针常量

常量指针 int const*p=&a;
*p=2 //error,不能改变常量的值,但是可以改变指针的指向
p=&b; //true;

指针常量 int *const p =&a;
*p=2; //true ,可以改变值,但是不可以改变指针的指向
p=&b // error

c++多态:博客1 博客2

const的应用 :博客

const修饰的对象能调用成员函数吗 博客

c/c++中static详解
C++类中的静态成员变量和静态成员函数的作用

模板类中可以使用虚函数吗?模板成员函数可以是虚函数吗?博客

引用和指针

空间配置器
适配器

c++中类如果没有自定义构造函数,系统会默认为类提供什么构造函数
(共两个:默认构造函数和默认拷贝构造函数)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值