- 博客(72)
- 收藏
- 关注
原创 C++蓝桥杯实训篇(一)
嗨~小伙伴们,大家好!现在我们来到实训篇啦~本篇章涉及算法知识,比基础篇稍微难一点,我会尽量把习题讲的通俗易懂。准备好了吗?咱们开始咯!
2025-03-26 23:02:26
1909
原创 C++蓝桥杯填空题(必拿分)
嗨~小伙伴们,今天咱们来看看填空题,蓝桥杯竞赛体型分为填空题和编程题。咱们先把填空题做对了,越往后面越有信心,对不对~
2025-03-21 16:09:03
776
原创 C++蓝桥杯基础篇(十一)
嗨~小伙伴们,大家好!今天我们来学习C++蓝桥杯基础篇(十一),学习类,结构体,指针相关知识,准备好了吗?咱们开始咯~
2025-03-11 23:53:08
1933
原创 C++蓝桥杯基础篇(八)
嗨~小伙伴们,大家好!今天我们一起来学习C++蓝桥杯基础篇(八),练习相关字符串的习题,准备好了吗?Are you ready? Let's go!
2025-03-07 21:16:46
781
原创 Selenium自动化测试
一、自动化测试指通过专门的软件工具和脚本来执行测试任务,而不需要人工干预。它可以自动执行各种测试任务,包括功能测试、性能测试、压力测试等,并生成详细的测试报告。二、自动化测试的优势(1)提高效率:自动化测试可以快速执行大量测试用例,比人工测试更高效。(2)提高准确性:自动化测试可以避免人为错误,确保每一次测试的一致性和准确性。(3)节省成本:自动化测试可以减少人工测试的时间和成本,提高测试效率(4)支持持续集成:自动化测试可以集成到持续集成流程中,实现快速反馈和迭代开发。
2024-11-15 17:47:20
1009
原创 C++之list类
(1)list类是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代(2)list类的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素(3)list类和forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效(4)与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好
2024-11-12 16:41:56
816
原创 C++之vector类的模拟实现
这些成员变量用于管理vector内部的动态数组(1)_start:这是一个指针,指向分配给vector的内存区域的开始。这是数组的第一个元素。(2)_finish:这个指针指向数组中最后一个实际存在的元素的下一个位置。这意味着它指向结束后的第一个元素,它用来表示存储在vector中的实际元素的结束。(3)_end_of_storage:这个指针指向分配给vector的内存块的末尾。这不是最后一个有效元素的位置,而是整个内存块的结束位置,在这之后可能会有额外的未初始化空间,预留以实现当vector
2024-11-07 00:03:46
734
原创 C++之vector类
(1)vector是表示可变大小数组的序列容器。(2)就像数组,vector也采用连续存储空间来存储元素。这也说明,可以采用下标对vector的元素进行访问,和数组一样高效,但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。
2024-11-02 11:31:56
971
原创 C++之String类模拟实现(下)
哈喽~小伙伴们,在上一篇中,我们讲解了C++的string类的相关函数,这一章中,我们将继续深入学习string类函数,准备好了吗?咱们开始咯~
2024-10-12 19:38:53
857
6
原创 C++之String类模拟实现(上)
分配足够的内存来存储n个字符和一个额外的空字符(存储'\0'),再将原来的字符串拷贝到新的空间中,并使原来的指针指向新空间,最后修改capacity为n。今天,我们学习了模拟实现C++的string类函数,下一篇文章中,我们将继续介绍相关函数。我们stl库中的string类是在std命名空间的,这里我们自定义一个命名空间bit,包含string类和简单的成员变量。这种写法看似正确,其实是错误的,因为如果我后面需要打印字符串,需要对空指针解引用,编译器会崩溃。库里面,严格来说,它开了1个空间,存放’\0'。
2024-10-12 10:36:53
1065
1
原创 C++之String类(下)
①在string尾部追加字符时,s.push_back(c)/s.append(1,c)/s += 'c' 三种的实现方式差不多,一般情况下,string类的+=操作用的比较多,+=操作不仅可以连接单个字符,还可以连接字符串。npos是string类中定义的一个静态成员变量,类型为无符号整型,值为-1,因为是无符号转换后变成整型的最大值,也就是4294967295(42亿多) ,当我们不给pos的值,按照缺省值执行,默认从字符串尾部开始寻找。我们要做的,只是将字母反转,其他符号的位置不变。
2024-10-01 21:02:31
962
4
原创 C++之String类(上)
C语言中,字符串是以'\0'结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP思想(面向对象编程),而且底层空间需要用户自己清理,稍不留神可能还会越界访问。
2024-09-30 09:09:50
1126
原创 C++之模板初阶
哈喽,小伙伴们,好久不见~ ,古时候,人们对于文化知识的需求不断增长,手抄书籍的方式已经无法满足这种需求。因此,人们开始探索更高效的复制和传播知识的方法-----印刷术。在写C++程序的时候,我们也会遇到大量且重复的问题,例如:Swap交换函数。如果我们稍微改变一下2个数的类型,那么交换函数又要重新写。为了解决问题更高效,模板就出现了。
2024-09-22 17:37:19
793
2
原创 C/C++内存管理
我们在创建自定义类型对象的时候,需要调用构造函数,销毁时需要调用析构函数。如果我们使用malloc和free的话,是不会调用这2个函数的。使用new来为自定义类型对象申请空间,编译器才会调用构造函数为对象初始化;用delete为自定义类型对象释放空间,才能调用析构函数。class A {public://默认构造:_a(a)//拷贝构造:_a(aa._a)//赋值运算符重载if (this!//析构函数~A() {
2024-09-17 13:53:28
958
原创 类和对象(中)
如果一个类中什么成员都没有,简称为空类。空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。默认成员函数:用户没有显示实现,编译器会生成的成员函数称为默认成员函数。
2024-09-07 20:21:42
1079
2
原创 类与对象(上)
C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。比如:之前在数据结构初阶中,用C语言方式实现的栈,结构体中只能定义变量;现在以C++方式实现,会发现struct中也可以定义函数。
2024-08-24 15:41:34
711
3
原创 初识C++
C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机,20世纪80年代,计算机界提出了OOP(object oriented programming: 面向对象)思想,支持面向对象的程序设计语言应运而生。
2024-08-21 23:53:55
1245
2
原创 数据结构之排序(下)
嗨!小伙伴们,咱们又见面啦,在上一篇数据结构之排序(上)中,我们学习了直接插入排序、冒泡排序和希尔排序,今天我们继续学习排序这一块,准备好了吗?Ready Go ! ! !
2024-08-15 10:25:23
802
3
原创 数据结构之队列
在上一章中,我们学习了数据结构之栈,知道了栈遵循后进先出(LIFO)原则。与栈相对的,队列中的数据元素遵循先进先出(FIFO)原则。那么什么是队列呢?字面意思来看,就是下图中小狗们排队的场景,每当新的小狗想加入队列时,就会排到最后面;如果最前面的小狗打完饭了,就会出队列。也就是我们说的先进先出(FIFO)。
2024-07-07 17:42:00
1074
4
原创 数据结构之排序(上)
嗨,小伙伴们,大家好!我们今天来学习数据结构之排序(上),今天我们先讲一讲3个排序,分别是直接插入排序、冒泡排序以及希尔排序。
2024-05-12 15:30:52
857
2
原创 二叉树习题汇总
所以,其实这道题和相同的树有点类似,都是先比较根节点,再比较根节点的左右子树。对称二叉树是左子树和右子树进行比较, 左子树的左子树与右子树的右子树进行比较,以及左子树的右子树与右子树的左子树进行比较。可以通过比较根节点的左右子节点是否相等,以及递归地比较左子树的左子节点与右子树的右子节点,左子树的右子节点与右子树的左子节点,来判断二叉树是否对称。今天我们学习了7道二叉树的练习题,说句心里话,第一次我做题的时候,也是迷迷糊糊,磕磕碰碰,但是多做几遍,多画一画图,我相信,小伙伴们都能学会~Ready Go!
2024-05-08 21:12:40
1126
6
原创 数据结构之二叉树
1. 树概念及结构树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一颗倒挂的树,一颗根朝上,叶朝下的树。
2024-05-04 16:39:06
1246
12
原创 堆排序以及TOP-K问题
这里我们先假设要排成升序,也就是从左到右,结点的值依次增大思路一:①先有堆这个数据结构,②给定一个数组arr, 我们可以把arr数组里面的元素全部拷贝到堆中,然后利用堆自身向下调整算法来进行排序,排成小堆,排好序后,再逐一拷贝回arr数组。
2024-05-02 23:50:56
1021
8
原创 C语言:文件操作(下)
嗨!小伙伴们,在前2篇中,我们分别讲述了C语言:文件操作(上)和C语言:文件操作(中),今天我们将会学习文件操作(下),准备好了吗?Ready Go ! ! !
2024-05-01 17:02:07
985
1
原创 C语言:文件操作(中)
需要注意的是,fscanf函数会按照格式化字符串中的格式要求进行读取,如果格式不匹配,可能会导致读取错误或结果不正确。函数会根据format字符串中的格式指示符,将可变参数列表中的数据按照指定的格式输出到文件中。读取的位置随着每次读取而向后移动。今天我们学习了另外4个函数,分别是fprintf函数,fscanf函数,fwrite函数,fread函数,希望看完这篇文章能对友友们有所帮助!fread函数时C语言中的文件输入函数,用于从文件中读取指定数量的数据项,并将其存储到指定的内存块中。Ready Go!
2024-04-29 23:15:36
766
原创 C语言:文件操作(上)
如果没有文件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运行程序,是看不到上次程序的数据的,如果要将数据进行持久化的保存,我们可以使用文件
2024-04-28 23:56:25
2169
1
原创 建堆时间复杂度
所以,F(H) = 2^(h-2)*1 + 2^(h-3)*2 + ...... + 2^3*(h-4) + 2^2*(h-3) + 2^1*(h-2) + 2^0*(h-1),F(H) = F(h1)+F(h2)+F(h3)+F(h4)+.......+F(h-1)+F(h) ,其中,F(h) = 每层结点个数 * 向下调整次数。所以,F(H) = 2^1*1 + 2^2*2 + 2^3*3 + ...... + 2^(h-2)*(h-2) + 2^(h-1)*(h-1) ,我们用。
2024-04-27 11:46:30
930
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人