自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ##二叉树

二叉树是一种树形数据结构,它的每个节点最多有两个子节点,通常被称为左子节点和右子节点。二叉树的节点由三部分组成:数据元素、指向左子节点的指针和指向右子节点的指针。根节点:二叉树中最顶层的节点,没有父节点。一棵树有且只有一个根节点。叶子节点:没有子节点的节点,也称为终端节点。内部节点:除了叶子节点以外的其他节点,即至少有一个子节点的节点。深度:从根节点到该节点的最长路径上的节点数,根节点的深度为 1。高度:从该节点到叶子节点的最长路径上的节点数,叶子节点的高度为 1。层。

2025-03-09 09:23:25 341

原创 #栈和队列

stack的核心是通过封装一个底层容器,并提供栈的接口(如pushpoptop等)来实现的。它的实现依赖于底层容器的操作。stack就像是一个桶每次只能取栈顶的数据。deque(双端队列)是stack的默认底层容器,因为它支持高效的尾部插入和删除操作(push_back和pop_back),这正是栈所需要的。栈的应用场景非常广泛,涵盖了计算机科学的多个领域,包括操作系统、编译器、算法设计、日常软件开发等。其**后进先出(LIFO)**的特性使其在需要“撤销”、“回溯”、“嵌套”等操作的场景中。

2025-03-08 17:13:58 444

原创 Vector

模板类是C++中一种强大的特性,允许你编写通用的、类型无关的代码。通过使用模板,你可以定义一个类或函数,使其能够处理多种数据类型,而不需要为每种类型都编写单独的代码。模板类在C++标准库中广泛应用,例如std::liststd::map等都是模板类。在vecor实现里,模板是很重要的一个环节,所以自主实现需要事先准备好模板。

2025-03-06 15:49:04 387

原创 string深浅拷贝

但在早期的string实现的过程中还用到了引用计数这一方法,原理就是利用引用计数,让多个对象使用同一空间,增加则计数加一反之减一当计数等于0是就释放该空间,当某个对象要修改时,这个时候才触发写时拷贝让这个对象得到一个新空间。在Linux里fork创建子进程也使用了相同的方法;但由于引用计数的缺点(尤其是线程安全问题),现代 C++ 标准库(如 GCC 5.x 及更高版本)通常不再使用引用计数。

2025-03-03 20:46:25 301

原创 只出现一次的数字|||

这个算法通过两次遍历和位运算,高效地找出了数组中两个只出现一次的数字。第一次遍历计算所有元素的异或值,找到两个数字的差异位;第二次遍历根据差异位将数组分成两部分,分别计算两个只出现一次的数字。中第一个为 1 的位。这个位表示两个只出现一次的数字在该位上不同。这个差异位用于将数组分成两部分,每部分包含一个只出现一次的数字。由于异或操作的性质,相同的数字会相互抵消(的值是两个只出现一次的数字的异或结果。如果元素的差异位为 1,则与。如果元素的差异位为 0,则与。就是两个只出现一次的数字。

2025-03-02 09:05:13 180

原创 类和对象3

1.再探构造函数1.再探构造函数我们实现构造函数时,初始化成员变量主要使⽤函数体内赋值,构造函数初始化还有⼀种⽅式,就是初始化列表,初始化列表的使⽤⽅式是以⼀个冒号开始,接着是⼀个以逗号分隔的数据成员列表,每个"成员变量"后⾯跟⼀个放在括号中的初始值或表达式。每个成员变量在初始化列表中只能出现⼀次,语法理解上初始化列表可以认为是每个成员变量定义 初始化的地⽅。,必须放在初始化列表位置进⾏初始 化,否则会编译报错。

2025-02-24 20:09:18 988

原创 C++中不同变量的内存分配问题

1. 选择题: 选项: A.栈 B.堆 C.数据段(静态区) D.代码段(常量区)staticGlobalVar在哪里?pChar3在哪里?globalVar在哪里?staticVar在哪里?localVar在哪里?*pChar3在哪里?*char2在哪里?

2025-02-24 19:45:19 172

原创 类和对象2

1.类的默认成员函数1.类的默认成员函数默认成员函数就是⽤⼾没有显式实现,编译器会⾃动⽣成的成员函数称为默认成员函数。⼀个类,我们不写的情况下编译器会默认⽣成以下6个默认成员函数,需要注意的是这6个中最重要的是前4个,最后两个取地址重载不重要,我们稍微了解⼀下即可。其次就是C++11以后还会增加两个默认成员函数,移动构造和移动赋值,这个我们后⾯再讲解。默认成员函数很重要,也⽐较复杂,我们要从两个⽅⾯去学习:•第⼀:我们不写时,编译器默认⽣成的函数⾏为是什么,是否满⾜我们的需求。•。

2025-02-23 20:48:59 762

原创 类和对象1

类是对象进⾏⼀种抽象描述,是⼀个模型⼀样的东西,限定了类有哪些成员变量,这些成员变量只 是声明,没有分配空间,⽤类实例化出对象时,才会分配空间。如果嵌套了结构体的情况,嵌套的结构体对⻬到⾃⼰的最⼤对⻬数的整数倍处,结构体的整体⼤⼩ 就是所有最⼤对⻬数(含嵌套结构体的对⻬数)的整数倍。类定义了⼀个新的作⽤域,类的所有成员都在类的作⽤域中,在类体外定义成员时,需要使⽤::作⽤域操作符指明成员属于哪个类域。class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省。

2025-02-21 21:24:16 198

原创 随机链表的复制

2024-06-04 15:09:05 138

原创 链表顺序表差异

顺序表更多用于元素高效储存和频繁访问的地方,而链表更多应用于任意位置可以插入或者频繁删除的地方,顺序表对缓存利用率大于链表,因为顺序表在物理结构上是连续的,而链表只是逻辑上连续当物理上是不连续的,在缓存器命中时会很大概率上命中顺序表的多个元素,而链表在物理结构上不连续缓存器很难命中多个元素。顺序表插入时动态顺序表空间不够需要扩容,链表没有容量的概念,按需要申请释放就可以了。顺序表和链表的差异,在储存空间上顺序表,物理结构上是连续的,而链表在逻辑顺序上市联系的,但物理结构上是不一定连续的。

2024-05-21 11:42:14 210

原创 结构体和对齐规则

对⻬数 = 编译器默认的⼀个对⻬数 与 该成员变量⼤⼩的较⼩值。此结构体中int最大所以其对齐数为4<8所以该结构体的大小应该是4的整数倍。结构体中可以储存多种类型的数据,可以用来更清楚地描述一个自定义变量。其他成员变量要对⻬到某个数字(对⻬数)的整数倍的地址处。如图0到8一共9个字节所以该结构体大小为12字节。结构是⼀些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。结构体的大小和本身所储存的数据和编译器有关。结构体的第⼀个成员对⻬到和结构体变量起始位置偏移量为0的地址处,

2024-04-22 18:18:33 165

原创 各种指针的定义和使用

如上图所示对不同变量定义指针时需要用到对应变量类型的指针,并且指针变量的内容是所指向变量的地址 所在对于变量指针定义时需要用到“&”的符号,而数组不同数组名代表的就是数组首元素的地址所以不必加“&”的符号但是如果针对数组中的某个变量的指针这里对象是变量了所以我们需要用到其地址。在c语言中,会用到各种变量函数等等,而内存就像是基石为这些实现提供了空间,在c中有一种变量用来专门指向这些空间,这就是指针,指针就是一种专门储存地址的变量,如果把空间比作房间的话,那么指针就像是门牌号,可以通过某种方式找到这些房间。

2024-04-16 15:42:02 319

原创 扫雷游戏c

我们在排雷的过程中需要一次次输入坐标统计坐标周围的雷的数量,这里要注意我们开始输入的是0字符和1字符,所以让他们相加减的话数据会使用他们的阿斯克码值相加,我们通过查阅1和0的阿斯克码值发现他们只相差一所以我们在计算的时候只需要减去八个零的阿斯克码值就可以得到周围雷的个数了。打印机盘也同样我们使用for循环,并且为了要有图示的效果,我们在打印之前的第一行打印一列列号,每一行开始打印一个行号。最后,是在程序编写的过程中我们需要注意到的是函数的声明以及函数体的编写,传参的过程要十分小心。今天的分享就到这里。

2024-01-18 19:52:49 683 1

原创 循环的干预操作

我们知道一个循环的正常执行要不就是死循环例如:"while(1)", 要不就是超出预先定义的参数范围 而主动结束循环,而break语句就是一条可以直接跳出循环的一句,其结束循环的方式是一种异常结束。居然是什么都没有,在监视窗口我们会找到答案,因为continue与while形成了死循环,在i=2时continue跳过了本次循环进入下次循环,而下一次i的值依旧是2,就继续执行continue,形成了死循环。另外continue也是干预循环 的另一个手段continue可以结束本次循环直接跳转到下一次循环。

2024-01-01 15:56:37 513

原创 关于循环你需要知道的

这两种不同的循环第一种是先判断条件在执行循环中的代码块,再往复判断执行直到条件不符合跳出循环。它们之间最重要的不同就是如果条件不满足while循环中的代码块不在被执行,而do while就算条件不满足代码也会执行一轮再跳出循环。2.for循环在c语言中也是最常用的循环,for循环的使用常需要引入参数来调节其执行的次数如下图就是for循环执行11次跳出循环的代码示例。循环在c语言中解决了代码块不能反复往返执行的问题,使得在循环内部的代码可以根据程序员自己的需要来执行几次,以及使得代码更简洁。

2023-12-20 15:30:04 535 1

原创 【无标题】

b.我是python入门的编程语言,所以我想再回来学好c语言,再学习SQL,再去深究python来具备我的专业技能,a.我是西南石油大学大一的新生但宇,就读理学院人工智能二班,性格开朗乐观喜欢打篮球尬舞。c.先 入门由易到难由简到繁,线下买书实操,线上b站培训班·刷题。d.尽可能花时间学习回忆总结。

2023-11-19 15:54:35 64

空空如也

空空如也

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

TA关注的人

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