自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法: 双指针

为什么要用虚拟头节点(哨兵位)?当我们需要删除链表中的某个节点时,通常需要访问待删除节点的前一个节点,因为删除操作涉及到将前一个节点的next指针重新指向待删除节点的下一个节点。

2024-08-29 21:25:01 1173 28

原创 算法:双指针

我们希望找到复写后数组的最后一个元素,但直接继续往后遍历显然不行。尽管通过题目我们知道最后一个元素的值,但是遍历的结束条件是什么呢?因此,我们需要改变策略:从往前遍历转为使用“快慢指针”方法。快指针比慢指针走得更快。当快指针到达数组的末尾或空位时,慢指针应该指向正确的位置。这样我们就可以确保通过快慢指针的方法定位到数组复写后指定的最后一个元素。但是,需要注意的是,这种方法也是有限制的。具体来说,当cur指向0时,dest需要往前走两步,而在其他情况下,dest只需要往前走一步。

2024-08-26 13:55:54 1343 23

原创 C++ string模拟实现

既然要模拟实现string底层那就得先理解为什么我写的string和库string里面不会冲突。1 头文件查找路径当我们用双引号""包围头文件时,编译器会首先在当前目录下查找这个头文件。这意味着它会优先找到我们自己定义的头文件(比如string.h),而不是标准库中的头文件。因为标准库的头文件通常在其他系统目录中,所以不会发生冲突。2 避免名字冲突虽然使用双引号包含头文件可以让编译器优先使用我们自定义的头文件,但如果我们在头文件中定义了一个与标准库相同名称的类或函数,仍然可能导致混淆或冲突。

2024-08-12 22:18:29 2242 53

原创 C++ STL与string类

C++ 标准库提供了一个名为的类,用于处理字符串。string类是std命名空间的一部分。string数组访问:访问数组元素时,是通过指针偏移和解引用来实现的。例如,arr[i]实际上是*(arr + i),即从指针arr偏移i个元素后得到的地址的值。字符串访问:在string类中,operator[]是一个函数调用。每次使用s1[pos]时,实际上是调用了这个函数来返回字符串中位置pos的字符的引用。迭代器提供了统一的接口来遍历不同类型的容器(如数组、链表、树等),不需要知道容器的内部实现。

2024-08-07 20:58:25 1570 38

原创 C++ 模板初级

通过模板,我们可以编写更简洁、复用性更高的代码,而编译器会根据具体使用的类型生成对应的函数,不会混淆不同的类型。显式实例化:明确指定类型,适用于需要确定类型或编译器无法正确推断类型的情况。隐式实例化:代码更简洁,适用于编译器能够正确推断类型的情况。非模板函数优先:如果有一个非模板函数的参数类型完全匹配,编译器会优先选择它。模板函数其次:如果没有找到完全匹配的非模板函数,编译器会尝试使用模板函数进行匹配,并实例化一个具体的函数。模板的灵活性。

2024-07-29 12:43:08 736 33

原创 C++ 类和对象 终篇

共享性:静态成员变量在所有对象间共享,同一个类的所有实例都可以访问同一个静态成员变量。类外初始化:静态成员变量必须在类外进行定义和初始化,确保它们只初始化一次。友元函数是一个定义在类外部的普通函数,但它被授予访问该类的私有和保护成员的特权。友元函数不是类的成员函数,但需要在类的内部声明,并使用friend关键字。友元类在C++中是一个用于控制访问权限的重要机制。它们允许一个类的所有成员函数访问另一个类的私有和受保护成员。

2024-07-26 23:47:36 950 40

原创 C++ 类和对象 隐式类型转换

return 0;在该代码转换过程中,编译器会创建一个临时的常量变量来保存b的值。这是为了确保原变量b不会在转换过程中被修改。临时变量temp的值(即4.56)会被转换为int类型。在这个转换过程中,小数部分被截断,只保留整数部分。因此,temp的值4.56转换为int类型后变成4转换后的整数值4被赋值给变量a这就是内置类型中的隐式转换,接来让我们看看自定义类型是怎么转换的class C {public:private:int _x;

2024-07-23 00:04:00 1269 38

原创 C++ 类和对象 构造函数(下)

在C++中,构造函数用于创建对象并赋予其初始值。上述代码中,构造函数调用之后,对象的成员变量已经有了初始值,但是这种方法并不是真正的初始化,而是赋值。因为初始化只能进行一次,而构造函数体内可以多次赋值。

2024-07-20 17:48:45 1410 42

原创 C++ 类和对象 赋值运算符重载

运算符重载是通过定义特殊的成员函数或全局函数来实现的。

2024-07-15 22:01:43 1305 40

原创 C++ 类和对象 拷贝构造函数

拷贝构造函数是一种特殊的构造函数,用于创建一个对象是另一个对象的副本。当需要用一个已存在的对象来初始化一个新对象时,或者将对象传递给函数或从函数返回对象时,会调用拷贝构造函数。

2024-07-08 22:08:07 1249 43

原创 C++ 类和对象 构造 / 析构函数

内置类型:1.内置类型的成员变量在默认构造函数中不会被自动初始化2.如果不显式初始化,成员变量的值将是未定义的(即随机值)自定义类型:1.自定义类型的成员变量在默认构造函数中会调用其默认构造函数。这意味着,即使你没有显式定义自定义类型的构造函数,编译器也会自动调用默认构造函数来 初始化这些成员变量。class Timepublic:Time()// Time类的无参构造函数_hour = 0;class Date。

2024-07-05 21:31:52 2239 45

原创 C++ 类和对象

面向过程编程(POP):专注于过程和步骤,类似于按照菜谱做饭,每一步都是具体的指令。面向对象编程(OOP):专注于对象和交互,类似于咖啡店中的角色分工,每个对象都有自己的职责,通过对象之间的协作来完成任务。class className// 类名// 类体:由成员函数和成员变量组成// 一定要注意后面的分号class Dateint date;int month;

2024-06-28 22:54:03 1406 41

原创 C++ 入门

C++的起源可以追溯到1979年,当时Bjarne Stroustrup在贝尔实验室开始开发一种名为“C with Classes”的语言。C++的演进不断增加新特性,提升性能和编程效率,适应现代开发需求。

2024-06-24 18:54:26 1491 35

原创 数据结构:二叉树与树

树是一种非线性的数据结构,它是n(n >= 0)个结点的有限集。当n = 0时,称为空树。在任意一棵非空树中应满足:2.1 有且仅有一个特定的称为根的结点。2.2 当n > 1时,其余结点可分为m(m > 0)个互不相交的有限集T1 ……Tm,其中每个集合本身又是一棵树,并且称为根的子树。显然,树的定义是递归的,即在树的定义中又用到其自身,树是一种递归的数据结构。树作为一种逻辑结构,同时也是一种分层结构,具有以下两点特点:2.3 树的根结点没有前驱,除根结点外的所有结点有且只有一个前驱。

2024-05-25 19:37:26 2783 71

原创 数据结构:队列

队列是一种遵循先进先出(FIFO)受限的线性数据结构。元素从队列的尾部添加,从队列的头部移除。队列通常用于模拟现实世界中按到达顺序处理项目的场景。栈是一种遵循后进先出(LIFO)受限的线性数据结构。元素从栈的顶部添加,从栈的顶部移除。栈通常用于实现涉及回溯或解决递归问题的算法。队列和栈是基础数据结构,具有不同的特性和应用。队列适用于按顺序管理项,而栈适用于实现涉及回溯或解决递归问题的算法。

2024-05-06 15:55:02 858 46

原创 数据结构:栈

栈(Stack)是只允许在一端进行插入或删除操作的线性表。首先栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作。栈顶(Top)线性表允许进行插入删除的那一端栈底(Bottom)固定的,不允许进行插入和删除的另一端。空栈不含任何元素。

2024-05-04 22:28:16 1818 34

原创 数据结构:线性表(详解)

线性表,单链表,双链表

2024-05-04 13:45:26 2506 25

原创 初识C语言

大家都知道人与人是用中文,英文,日语,韩语…… 那人与计算机交流用的语言就是计算机语言,它们包含了C语言,C++,Java,Python但是我觉得学什么语言都绕不开C语言那么今天就让我们一起走进C语言看看它是怎样诞生的。C语言的前身是1967年由Martin Richards为开发操作系统和编译器而提出的两种高级程序设计语言BCPL和B.BCPL。Ken Thomposon 在BCPL的基础上,提出了新的功能更强大的B语言,并在1970年用B语言开发出UINX操作系统的早期版本。

2023-10-09 22:27:01 408 21

空空如也

空空如也

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

TA关注的人

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