- 博客(28)
- 收藏
- 关注
原创 【C++】哈希表
摘要:哈希(散列)是一种通过哈希函数建立关键字与存储位置映射的数据组织方式,核心目标是实现快速查找。哈希冲突是不同关键字映射到同一位置的现象,解决方法包括开放定址法(线性探测、二次探测、双重散列)和链地址法(拉链法)。开放定址法通过探测序列寻找空位,而链地址法使用链表存储冲突元素。哈希函数设计需考虑均匀分布,如除法散列法、乘法散列法和全域散列法。负载因子(元素数/表大小)影响性能,需权衡空间利用与冲突概率。代码实现展示了基于开放定址法和链地址法的哈希表结构及操作。
2025-09-27 19:36:37
767
原创 【C++】红黑树
红黑树是一种自平衡二叉搜索树,通过颜色标记节点(红/黑)和四条核心规则确保近似平衡:1)每个节点非红即黑;2)根节点为黑;3)红节点的子节点必为黑;4)任意路径黑节点数相同。插入时通过变色和旋转(单旋/双旋)处理冲突,时间复杂度保持O(logN)。验证时需检查根节点颜色、无连续红节点、所有路径黑高等规则。相比AVL树,红黑树旋转次数更少,实际性能更优。代码实现包含节点结构、插入逻辑和平衡验证方法,确保树结构始终满足平衡条件。
2025-09-20 21:58:55
936
原创 【C++】AVL树简要和实现原理
AVL树是一种自平衡二叉查找树,通过严格控制节点左右子树高度差(不超过1)来维持平衡。本文详细介绍了AVL树的实现原理,包括平衡因子更新规则和四种旋转操作(左单旋、右单旋、左右双旋、右左双旋)。文章提供了完整的C++代码实现,包含节点结构、插入逻辑、平衡调整算法以及平衡验证方法。通过测试用例验证了AVL树在随机数据插入时的平衡性和性能表现,展示了其高效的自平衡特性。
2025-09-19 16:21:32
786
原创 【C++】map
map底层是由红黑树实现的,增删改查效率是O(logN),迭代器走的是中序,按Key有序遍历map的声明如下,Key就是map底层关键字的类型,T是map底层value的类型,map默认要求Key支持小于比较,如果不支持或者想要满足需求可以自行实现仿函数传给第二个模板参数map底层储存数据的内存是从空间配置器申请的一般情况下不需要传后面两个模板参数在实际使用中,我们会用到pair类型map底层的红黑树节点中的数据,使用pair存储键值对数据在C++中,std::pair。
2025-08-09 17:30:02
342
原创 【C++】set
摘要:C++中的set是一种基于红黑树实现的关联容器,主要用于高效查找场景。其默认使用小于比较对元素排序,支持自定义比较函数和内存分配器。set提供O(logN)时间复杂度的增删查操作,迭代器按中序遍历产生有序序列。主要功能包括:多种构造方式(默认、迭代器区间、拷贝、列表)、双向迭代器、元素插入(单值/区间)、查找(find/count)、删除(单值/区间)以及范围查询(lower/upper_bound)。set保证元素唯一性,插入重复元素会失败。
2025-08-09 16:56:41
171
原创 【C++】虚函数
C++虚函数机制解析:虚函数通过virtual修饰实现多态,派生类可重写基类虚函数。虚函数表存储虚函数地址,运行时动态绑定实现多态。纯虚函数(=0)使类成为抽象类,强制派生类实现。析构函数建议声明为虚函数以确保正确调用。C++11引入override和final关键字辅助虚函数管理。虚函数表结构包含基类虚函数、重写函数和新增虚函数,不同编译器实现细节可能不同。多态通过虚函数表机制在运行时确定调用函数地址实现。
2025-07-31 20:56:04
332
原创 【C++】vector入门
1.vector 是表示可变大小数组的序列容器2.vector 采用的连续存储空间来存储元素,也就是可以和数组一样采用下标对vector的元素进行访问。但是它的大小是可以动态改变的,而且它的大小会被容器自动处理。
2025-02-25 14:44:51
167
原创 【C++】类和对象(二)(默认成员函数、构造函数、析构函数、拷贝构造函数、operator运算符重载)
默认成员函数是当没有显式实现时,编译器自动生成的成员函数一个类的默认成员函数最多有6个:构造函数、析构函数、拷贝构造、赋值重载、取地址重载(普通对象和const对象取地址)
2024-12-06 00:17:39
1085
原创 【C++】入门基础(命名空间namespace、输入cin输出cout、缺省函数、函数重载、引用&、内联函数inline)
定义命名空间,需要使⽤namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中 即为命名空间的成员。命名空间中可以定义变量/函数/类型等namespace作用为定义出一个独立的域,与其他的全局域隔开,不同的域中可以取相同名称的变量C++中存在函数局部域、全局域、命名空间域、类域;这些不同的域之中定义的变量并不会相互冲突namespace只能定义在全局同时namespace还可以进行嵌套定义。
2024-11-30 19:15:56
899
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1