自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

是阿建吖!

这里是是阿建吖!,我非常热衷于计算机这个行业。目前对C语言和数据结构已经有很深的理解,并正在积极学习深入其他的知识,包括C++、Linux操作系统以及算法等。希望通过CSDN将自己的学习经历与见解分享给他人,希望在这里能够不断挑战自己,追求更高的技术水平。

  • 博客(36)
  • 收藏
  • 关注

原创 【C++】位图和布隆过滤器

这篇文章详细的介绍了位图与布隆过滤器,位图与布隆过滤器是C++开发者在处理大数据集时常用的优化工具。位图通过每一位表示集合中某元素的存在性,实现空间与查询效率的双赢,特别适用于快速去重和查找。而布隆过滤器则是一种概率型数据结构,利用多个哈希函数降低误判率,适用于判断元素是否“可能”存在于集合中,适合处理大规模数据过滤。尽管布隆过滤器存在删除困难和一定误判率的缺点,但其高效的空间利用率和查询速度,使其成为处理海量数据时的优选方案。掌握位图与布隆过滤器的实现与应用,对于提升C++程序性能至关重要。

2024-07-21 14:46:20 721 91

原创 【C++】哈希表的模拟实现及 unordered_set 和 unorderded_map 的封装

这篇文章详细探讨了哈希表的模拟实现过程,从模板参数列表的灵活设计到迭代器的引入,展现了哈希表作为高效数据结构的强大功能。接着,文章深入剖析了哈希表的核心组件,包括哈希函数、节点类和迭代器的实现,以及构造函数、析构函数等关键函数的设计。通过一系列精心设计的函数,实现了哈希表的查找、插入、删除等基本操作,确保了数据的高效管理。文章还展示了如何基于哈希表实现unordered_set和unordered_map,这两个数据结构在C++标准库中扮演着重要角色,分别用于存储唯一元素集合和键值对集合。

2024-07-12 20:34:37 1694 179

原创 【C++】哈希的概念及STL中有关哈希容器的使用

这篇文章详细介绍了C++标准库中的无序关联容器unordered_set和unordered_map,它们基于哈希表实现,提供了高效的增删查改操作。这些容器允许存储唯一元素(对于unordered_set)或键值对(对于unordered_map),并且查找时间复杂度通常为O(1)。它们提供了丰富的接口,如构造、迭代、容量操作、增删查改及访问、以及桶操作等。底层结构基于哈希函数和哈希冲突解决策略(如开散列和闭散列),确保了数据的快速访问和存储。这些容器在需要高效查找和存储唯一元素或键值对的场景中非常有用。

2024-06-21 10:30:00 2016 135

原创 【C++】AVL树/红黑树实现及map与set的封装

这篇文章详细介绍了AVL树和红黑树的基本概念、性质、节点定义、操作以及它们的实现方法。首先,我们探讨了AVL树,这是一种自平衡二叉搜索树,通过旋转操作保持树的平衡。接着,我们介绍了红黑树,一种更复杂但插入和删除操作更高效的自平衡二叉搜索树,并比较了它与AVL树的特点。随后,我们深入模拟了红黑树的实现,包括迭代器、清空、大小判断、节点查找、插入和遍历等功能。最后,我们讨论了如何封装set和map数据结构,基于红黑树的特性提供高效的数据存储和检索功能。希望这篇文章能够帮助读者深入理解二叉树的结构和应用。

2024-06-14 13:00:41 1781 164

原创 我的创作纪念日 --- 携手CSDN的512天

我的未来不是等待别人的赐予,而是通过自己的努力去争取。

2024-06-14 12:59:28 1028 13

原创 【C++】─篇文章带你熟练掌握 map 与 set 的使用

这篇文章详细介绍了C++标准库中的关联式容器,包括键值对(pair)的概念以及树形结构的关联式容器如set、multiset、map和multimap。首先,我们讲解了pair的基本使用及其常用接口,它是这些关联式容器的基础。接着,我们深入探讨了set和multiset的构造、迭代器使用、容量操作以及增删查改等操作。随后,我们介绍了map和multimap的类似功能,并特别提到了map中的operator[]操作符。最后,我们通过具体的OJ问题为例进行讲解,希望能够帮助读者深入理解本篇文章的知识。

2024-06-07 01:23:43 1226 154

原创 【C++】二叉树进阶(二叉搜索树)

这篇文章详细介绍了二叉搜索树(BST)的基本概念、操作、代码实现以及应用。首先,介绍了BST的定义和核心操作,包括查找、插入和删除,并提供了非递归和递归两种实现方式。随后,通过具体的代码示例,展示了BST的节点设置、类框架构建以及查找、插入、中序遍历和删除函数的完整实现。此外,还探讨了BST在实际问题中的应用和性能分析。进阶部分则包含了一系列与二叉树相关的OJ题目,涵盖了从根据遍历序列构造二叉树,到层序遍历、公共祖先查找、BST与双向链表转换等多种场景,希望能够帮助读者深入理解二叉树的结构和应用。

2024-05-26 14:28:18 1658 188

原创 【C++】多态

这篇文章详细介绍了C++面向对象编程中的多态概念及其相关知识点。多态是编程中的一个核心概念,它允许使用相同的接口处理不同的数据类型。多态的实现依赖于虚函数和继承机制,通过重写虚函数,可以实现对象在运行时根据类型执行不同的操作。C++11中的override和final关键字提供了对继承和多态的更强支持。多态的原理涉及虚函数表和动态绑定,允许程序在运行时确定应调用哪个虚函数的版本。单继承和多继承关系中的虚函数表处理方式略有不同,特别是菱形继承和菱形虚拟继承需要特别注意。

2024-05-18 10:20:57 1763 158

原创 【C++】继承

这篇文章详细介绍了C++面向对象编程中的继承概念及其相关知识点。首先定义了继承的基本概念和格式,包括继承关系、访问限定符以及基类成员访问方式的变化。接着,讨论了基类和派生类对象之间的赋值转化,以及继承中的作用域问题。文章还详细阐述了派生类的默认成员函数特性,并介绍了如何构建不可继承的类。此外,还探讨了继承与友元、静态成员的关系,以及复杂的菱形继承和菱形虚拟继承的解决方案。最后,对虚拟继承如何解决数据冗余和二义性进行了深入分析,并指出在菱形继承中应该选择哪个类进行虚继承修饰。

2024-05-10 13:53:01 1253 162

原创 【C++】一篇文章带你深入了解stack、queue 和 priority_queue

这篇文章详细介绍了C++标准库中涵盖了栈(Stack)、队列(Queue)、优先队列(Priority Queue)以及容器适配器的介绍和使用方法。栈是一种后进先出的数据结构,通过 push 和 pop 来操作元素,而队列则是一种先进先出的数据结构,使用 push 和 pop 来实现元素的添加和删除。优先队列则根据元素的优先级进行排序。除了介绍这些数据结构的使用方法外,还对它们的模拟实现进行了说明。同时还介绍了容器适配器的概念,以及为什么选择 deque 作为栈和队列的底层默认容器。

2024-05-01 12:42:01 1577 111

原创 【C++】一篇文章带你深入了解list

这篇文章详细介绍了C++标准库中的list容器,包括常见接口的说明和使用方法,以及对list的模拟实现。list是一个双向链表,其插入和删除操作较快,但访问元素较慢。在标准库中,list提供了多种构造函数,可以根据不同的需求进行初始化。list迭代器的使用也十分灵活,可以使用正/反向迭代器访问。在对list进行操作时,需要注意迭代器的失效问题。为了更深入地理解list的工作原理和实现细节,本文还进行了list的模拟实现。最后,本文还对比了list和vector的异同点,希望对大家理解list有所帮助。

2024-04-23 13:14:48 1796 125

原创 【C++】一篇文章带你深入了解vector

这篇文章详细介绍了C++标准库中的vector容器以及其常见接口和实现细节。首先,介绍了vector的基本概念和在标准库中的角色,然后详细说明了vector的常见接口,包括构造函数、迭代器的使用、容量操作以及增删查改等操作。接着,深入剖析了vector的实现细节,包括reserve和resize的实现、size、capacity和empty的实现、默认成员函数的实现、迭代器和范围构造函数的实现、插入、删除、头插、头删、尾插和尾删元素的实现、operator[]的实现等。

2024-04-17 10:24:50 1742 124

原创 【C++】模版

这篇文章详细介绍了泛型编程中的关键概念和技术。首先介绍了泛型编程的概念,然后深入讨论了函数模板和类模板的定义、实例化以及模板参数的匹配原则。接着介绍了非类型模板参数和模板的特化,包括函数模板和类模板的特化形式以及应用示例。还讨论了模板分离编译的概念、实现和解决方法。希望这篇文章对大家理解模版有所帮助。

2024-04-11 12:09:39 2055 110

原创 【C++】一篇文章带你深入了解string

这篇文章详细介绍了学习和使用C++标准库中的string的重要性和方法。本篇文章逐一解释了各种常用接口和函数的使用方法,从string对象的常见构造到容量操作、访问及遍历操作,再到增删查改等方面。特别是对经典的string问题如浅拷贝、深拷贝和写时拷贝进行了深入讨论。此外,文章还对string进行了模拟实现,包括默认成员函数、c_str、size、capacity、empty等函数的实现方法,以及比较函数、find、insert、erase和substr等功能的模拟实现。希望这些实现能够帮助大家理解。

2024-04-01 10:56:05 1743 154

原创 【C++】C&C++内存管理

内存管理是C / C++编程中至关重要的一部分,它直接影响程序的性能和稳定性。首先,了解C / C++内存分布是理解内存管理的基础。在C语言中,动态内存管理主要通过malloc、calloc、realloc和free函数来实现,而C++则引入了new和delete操作符,更方便地管理内存。对于内置类型,可以直接使用new和delete操作符,而对于自定义类型,需要实现相应的new和delete操作符以便正确地分配和释放内存。

2024-03-21 14:01:20 2024 163

原创 【C++】类和对象(下)

这篇文章深入探讨了C++中类的关键概念,包括构造函数的不同赋值方式、初始化列表和explicit关键字的使用。文章中还介绍了static成员的概念和特性,以及友元函数和友元类的作用。内部类、匿名对象和拷贝对象时的编译器优化也得到了详细解释,帮助大家更深入地理解类和对象之间的关系。本篇文章还设有对应题目,希望大家能够巩固对这些概念的理解和应用能力。

2024-03-13 16:29:57 1701 119

原创 【C++】类和对象(中)一篇文章带你学会六大默认成员函数

这篇文章深入探讨了C++中类的关键概念,重点介绍了类的6个默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值运算符重载。详细解释了每个函数的概念和特性,帮助大家深刻理解它们在对象生命周期中的作用。本文章还对日期类进行了实现,通过实际案例展示了如何应用这些概念来创建实用的类。此外,对const成员和取地址操作符的重载也能够更好地理解C++中类的强大功能和灵活性。

2024-03-06 12:15:46 1538 129

原创 【C++】类和对象(上)

本篇系统地介绍了面向对象编程中关键的概念和基础知识。从面向过程和面向对象的初步认识出发,逐步深入到类的引入、定义、访问限定符和封装等方面。详细解释了访问限定符的作用,以及封装如何提高代码的可维护性和安全性。类的作用域、实例化和对象模型的讨论进一步拓展了读者对面向对象编程的理解。本文章还对类对象大小计算、存储方式猜测和内存对齐规则的深入讨论。此外,为了更好地理解对象之间的关系还对this指针的引出和特性进行了解释。

2024-02-29 21:40:37 1912 124

原创 【C++】C++入门

C++是一种广泛应用于软件开发的高级编程语言。它结合了C语言的高效性和面向对象编程的特性,使得程序员能够编写高性能且可扩展的代码。C++具有丰富的标准库,涵盖了各种数据结构和算法,为程序员提供了丰富的工具和资源。入门学习C++时,重点理解语言的基本语法、数据类型、控制流结构以及面向对象编程的概念。通过编写简单的程序,掌握变量的声明与定义、函数的定义与调用、类的创建与使用等基本技能。同时,了解指针、引用、内存管理等重要概念,以及异常处理、模板元编程等高级特性,将有助于更深入地理解和应用C++语言。

2024-02-17 15:47:12 1324 48

原创 【数据结构】一篇文章带你学会八大排序

这篇文章将讲解八大排序的原理、思想、复杂度等,并且我会使用图片来讲解这些排序的过程,将过程讲完后会有C语言的代码实现,可以仔细阅读一下。在每讲完一个排序后,我会做一个小总结,帮助大家更好理解排序。

2024-02-08 21:23:44 2146 57

原创 【C语言】指针超详细讲解(超级详细!!!快来看快来看!!!)

本章将会对指针分为初阶指针和进阶指针,在初阶指针中我会讲述指针的概念、指针类型、野指针、指针和数组的关系和二级指针,而在进阶指针中我我会讲述字符指针、指针数组、数组指针、函数指针、函数指针数组、指向函数指针的指针和回调函数的相关内容,希望对大家有所帮助。

2023-07-20 11:46:23 6996 94

原创 【数据结构】非线性结构之树结构(含堆)

本篇文章将会对一些二叉树和堆的概念进行讲述,其中包括二叉树线性存储、二叉树链式存储和堆的概念和实现,本文章中还会对堆进行运用,例如堆排序的实现、TopK的实现。文章还会对一些二叉树题目进行略微的讲解,例如二叉树的前、中、后和层序遍历,二叉树的节点个数、二叉树的叶子节点个数和二叉树的第k层节点个数等题目讲解,希望对大家有所帮助。

2023-07-12 11:43:51 2457 129

原创 【数据结构】时间复杂度与空间复杂度

在学习C语言的时候,大多数的小伙伴们并不会对算法的效率了解,也许算法也是一个陌生的领域,当进入了数据结构这个模块,就应该对算法的效率做一个清晰的认识。但是算法的效率是什么呢?这里就引出来时间复杂度与空间复杂度的概念了。

2023-05-29 09:04:53 2199 81

原创 【数据结构】线性表之栈、队列

这篇文章继续讲述与顺序表和链表不同的线性结构:栈和队列!!

2023-05-22 16:58:10 1672 48

原创 【数据结构】线性表之链表

这篇文章讲述关于链表的定义、类别、实现、多种不同链表的优缺点和链表与顺序表的优缺点。线性表之顺序表链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。

2023-05-16 15:05:04 2542 49

原创 【数据结构】线性表之顺序表

线性表是n (n >= 0)个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的线性表在物理上存储时,通常以数组和链式结构的形式存储。数组形式链表形式顺序表是一种线性数据结构,通过连续的内存空间存储元素,可以随机访问任何位置的元素。它支持在常量时间内进行插入、删除和访问操作,但在插入或删除元素时可能需要移动后续元素,导致时间复杂度为O(n)。

2023-05-10 22:36:08 1006 15

原创 【C语言】通讯录(文件版)

前面我们完成了通讯录的静态版本和动态版本,虽然功能已经比较完善了,但是前面的通讯录缺少了存储联系人的能力,所以我们学习了文件的操作管理,这里我们就用上一篇文章的知识来完成这次的文章吧。关于通讯录的前两篇文章我放上两个链接:(1)

2023-05-06 13:49:51 1258 23

原创 【C语言】文件操作详解

前面我们使用通讯录记录联系人的时候,在程序结束后这些联系人都会被销毁,在下一次启动程序的时候,这些联系人又需要重新输入,为了防止这种情况,我们引入了文件操作,在程序结束后将通讯录中的内容保存在文件中,在下一次启动程序的时候在文件中读取内容,这样就能实现数据的持久化。

2023-04-28 18:10:54 780 13

原创 【C语言】通讯录(动态版)

通讯录动态版:上一篇文章我们完成了静态版的通讯录,这次我们完成对通讯录进行改造,使得通讯录能够自动扩大通讯录的容量。

2023-04-20 21:30:27 598 6

原创 【C语言】通讯录(静态版)

静态通讯录的完成,包括对通讯录进行增加(Add)、删除(Dul)、查找(Search)、修改(Modify)、显示(Show)、排序(Sort)等操作。

2023-04-11 23:01:44 1691 6

原创 【C语言】动态内存管理详解

动态内存管理详解

2023-04-07 22:35:17 664 2

原创 【C语言】自定义类型

自定义类型详解

2023-03-29 17:51:53 700 4

原创 【C语言】扫雷的模拟实现详解

扫雷的模拟实现详解

2023-03-24 18:50:51 566 5

原创 【C语言】关于处理字符和字符串的库函数,以及部分函数的实现

关于处理字符和字符串的库函数,以及部分函数的实现

2023-03-19 15:43:03 738 7

原创 【C语言】三子棋的实现(解析)

用C语言完成三子棋

2023-03-09 15:11:43 587 2

原创 About me

关于自己的信

2023-01-14 15:01:42 628 10

空空如也

空空如也

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

TA关注的人

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