自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 vector的实现

介绍了vector的实现

2025-05-26 20:34:03 867

原创 位图与布隆过滤器

在前面两个章节中我们详细讲解了哈希表的实现,今天我们就来看一看哈希的应用,也就是位图与布隆过滤器。我将与题目相结合来分别实现这两种应用。

2025-05-25 14:16:29 816

原创 unordered_set与unordered_map实现详解剖析

本文主要介绍了基于哈希表封装unordered_set和unordered_map的实现方法。通过引入KeyOfT模板参数,使用仿函数统一处理不同类型的数据结构。重点讲解了迭代器的实现,包括模板参数设计、const修饰处理、operator++运算符重载等关键细节。同时给出了unordered_set和unordered_map的具体实现,其中unordered_map特别实现了operator[]功能以提供便捷访问。两种容器都通过哈希表底层的Insert、Find、Erase等核心接口实现各自功能,体现了

2025-05-24 17:08:55 859

原创 哈希表的实现(下)

本文介绍了哈希表的开散列实现方法。开散列法通过链表解决哈希冲突,相比闭散列法具有更好的空间利用率。文章详细讲解了开散列的数据结构设计,包括节点定义和哈希表类实现,重点分析了插入操作的两种实现方式及其性能差异。此外,还探讨了字符串键值的哈希函数优化,以及查找和删除操作的实现细节。开散列法通过链地址法有效解决了哈希冲突问题,提高了哈希表的整体性能。

2025-05-24 13:07:22 1120

原创 哈希表的实现(上)

在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是,进行很少的比较次数就能够将元素找到,因此在C++11中,STL又提供了4个unordered系列的关联式容器,这四个容器与红黑树结构的关联式容器使用方式基本类似,只是其底层结构不同,分别是unordered_map、unordered_set和unordered_multimap、unordered_multiset。

2025-05-23 23:26:16 1268

原创 AVL树和红黑树(下)

本文介绍了如何通过泛型编程思想封装C++中的map和set,底层使用红黑树实现。首先,通过模板参数设计红黑树,使其能够同时支持map和set。接着,实现了迭代器__TreeIterator,并重载了++、--、*和->等操作符,确保迭代器能够正确遍历红黑树。map和set的封装主要通过调用红黑树的Insert方法实现,map还额外实现了[]操作符,方便插入和修改数据。最后,红黑树的Insert方法通过模板参数KeyOfV区分map和set的键值比较逻辑,确保插入操作的正确性。

2025-05-20 21:39:37 1265

原创 AVL树和红黑树(中)

上一章节中,我们介绍了AVL的一些功能,这节我们主要学习一下红黑树的实现。定义红黑树是一种自平衡的二叉搜索树,它通过一系列规则来维持平衡,而不是像AVL树那样追求严格的平衡。每个节点不是红色就是黑色。根节点是黑色的。如果一个节点是红色的,则它的两个子节点必须是黑色的。对于每个节点,从该节点到其所有后代叶节点的简单路径上,均包含相同数目的黑色节点。每个叶子节点(空节点)都是黑色的。特性近似平衡:红黑树不追求严格的平衡,而是通过上述规则确保树的近似平衡。

2025-05-19 20:19:34 1347

原创 AVL树和红黑树(上)

AVL树的Insert实现

2025-05-19 17:14:40 598

原创 二叉搜索树的实现

搜索二叉树的基本实现

2025-05-18 22:32:35 998

原创 二维数组题目及指针运算

指针相关的题目详解

2024-04-04 20:53:02 1349 1

原创 指针的诱惑(下)

sizeof与strlen的讲解以及一些题的讲解

2024-04-03 23:44:04 1449 1

原创 指针的诱惑(中2)

深入理解指针

2024-04-02 13:39:40 1107 1

原创 指针的诱惑(中)

对数组的问题进行了解释

2024-03-31 17:29:17 1166 1

原创 指针的诱惑(上)

我们来看b这个变量,他是int类型的,需要开辟四个字节的空间,我们的pc他是char*类型的,为了能让他存储b的地址,所以我们手动强制类型转换,就是在&b前面加上(char*)。通过打印和监视,我们可以知道a这个变量的地址,int类型的变量大小是四个字节,也就是需要向内存申请四个字节的空间,那么所得到的地址就是内存相对来说较小的地址。我们可以发现,通过a改变它的值和通过*p改变它的值效果是一样的,那我们就能知道,一般情况下如果给出一个变量的地址 ,那我们就可以通过*符号来改变它的值。大家可以自己试一下。

2024-03-30 23:35:02 1046 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除