- 博客(29)
- 收藏
- 关注
原创 自动化测试博客网页
由于我们想要实现:所有的其他测试文件里,都只用一个驱动对象来测试,而不创建多个驱动对象(节约空间,方便管理),所以就考虑使用单例模式。判断网页界面是否有用户名时,有时候会因为程序运行过快,网页未加载完毕,从而导致搜索不到元素,所以加强制等待。对于图片文件,我们再开一个文件夹用于存放图片images,里面再通过每天的日期来分类图片,每个图片的名字为时间+调用截图的方法名。注意:在我们输入错误密码或者错误账号等情况时,会出现弹框,在弹框被点击消失前,上述代码是不能实现截图的。输入正确的账号和密码,点击登入。
2024-10-16 19:51:45
968
原创 指针和引用区别
在C++中,引用不能完全替代指针。因为指针可以重新指向新的地址,而引用不行。引用只是对一些使用指针比较复杂的地方进行替代、优化,使代码更简单易懂。
2024-10-09 20:08:39
1038
原创 智能指针详解
当我们使用shared_ptr去封装指针时,由于share_ptr的析构函数默认调用的是delete函数,所以只能对new和new[]成立,对于其他情况开辟的空间,比如以下两种情况:malloc和fopen,shared_ptr原本自带的析构函数,都不能很好的释放空间,甚至对于fopen甚至会报错,这时我们就需要针对不同的指针情况定制删除器。,循环引用是指,我(p1)的成员中有智能指针指向(管理)你(p2),你(p2)的成员中有智能指针指向(管理)我,这样会使我(p1)和你(p2)的引用计数都变成2,
2024-10-08 16:31:50
621
原创 C++——模板详解
模板,就是把一个本来只能对特定类型实现的代码,变成一个模板类型,这个模板类型能转换为任何内置类型,从而让程序员只需要实现一个模板,就能对不同的数据进行操作。
2024-02-29 21:02:34
458
原创 C++——内存管理(new和delete)详解
调用operator new[]函数,在operator new[]中实际调用operator new函数完成对N个对象空间的申请,在申请的空间上执行N次构造函数。的空间,new和malloc,delete和free基本类似,不同的地方是:new/delete申请和释放的是单个元素的空间,new[]和delete[]申请的是连续空间,而且。,会在前面额外开辟4字节空间,用于存放类对象数组有多少个元素,让delete数组时,调用类的析构函数时知道要调用几次。来在堆上管理堆上的空间,但在c++中进行了更新。
2024-02-29 20:29:59
1124
原创 C++——友元
友元是C++提供的一种突破封装(突破类域)的方式,有时提供了便利。但是友元会增加耦合度,但破坏了封装,所以友元不宜多用。友元分为友元函数和友元类。
2024-02-29 17:48:11
452
原创 排序——堆排
堆排序过程:先使用向下调整建堆,得到一个小堆或者大堆。向下调整建堆要从最后一个叶子节点开始,也就是最后一个节点的父亲节点。建堆后,我们已经找出了原数组的最值(在堆顶),把它与最后一位元素交换,再对arr数组,除了被交换下去的值,前面的元素所有元素重新进行向下调整,再得到一个堆,再交换,重复操作,直到遍历到数组首元素,再调整完,就说明整个数组已经排序完毕。
2024-02-24 22:57:16
1093
原创 排序——选择排序
每次遍历数组时选择最大值和最小值,存储最大值和最小值下标,然后和最两边的数字交换,然后不断地选择,不断地将两边的范围缩小。时间复杂度O(N^2);空间复杂度O(1);选择排序是稳定排序。由于选择排序也比较简单,时间复杂度也比较大,所以很少被我们使用。
2024-02-24 21:34:46
395
原创 排序——希尔排序
希尔排序核心还是是直接插入排序,差别在于直接插入排序就是gap=1,而希尔排序是gap从n/2或者n/3+1开始不断地趋于1,最终gap=1进行一次直接插入排序就完成了。
2024-02-24 21:16:01
996
1
原创 C++——this指针
在使用类函数时,该函数会隐藏一个this指针,它会负责找到我们成员函数中所需的成员变量(成员变量可以是私人的),如下图所示,上面是我们调用时的用法,下面是隐藏的this指针重新加上的效果。在成员函数中使用this指针的时候,可以不用写出来,编译器自己会加上。但我们也可以自己加上this指针。
2024-02-24 19:49:07
427
原创 排序——直接插入排序
核心点:保持前面的数是有序的,后面的数依次与前面的数进行比较然后插入,类似于人类对一打无序的扑克牌排序,原数组越接近有序,所需要的时间复杂度就更少。时间复杂度:O(N^2);只有逆序才会时间复杂度才会是O(N^2),相比比冒泡更优。
2024-02-24 18:25:13
364
原创 C++命名空间详解
如果我们只想使用一个域里的某个函数或者变量,就可以用using 命名空间名::函数名/变量名,只展开某个域内的某个函数或者变量,这样就不会让一个域内的全部内容都展开,导致出现全局变量重复的情况。访问命名空间域中的变量时,需要用域作用限定符(::),使用方法为,命名空间名::变量名。,就是展开命名空间,把原命名空间域的锁打开,让其中的所以变量、函数、结构体重新变成全局性的,即不用域作用限定符也能访问到原命名空间域中的内容。它能限制使用的变量的范围,使用方法为,范围::变量名,范围不给时,默认为全局域。
2024-02-18 15:48:35
443
1
原创 循环队列设计解读
接着容易出现错误的点时返回对尾数据,返回对尾数据时,由于我们定义的back是在最后一个元素的后面,所以我们要返回back-1位置的数据,但是back-1是有可能造成数组越界的(就是back=0时),所以要分类讨论。如下图所示,这时就不能用back%k得到循环队列满了的条件了,必须用(back+1)%(k+1)==front来判断,也就是(back+1)%sz==front。循环队列的大小,就由我们传输进来的值来确定,但要注意:我们要开辟k+1个空间,用于计算循环队列是否满了的问题。
2023-12-18 19:40:50
453
1
原创 查找0~999之间的水仙花数
首先我们要引入水仙花数的概念:水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。由于水仙花数的特性,我们只能从100开始。再定义g:表示个位。z:表示个十百三个位的立方的总和(最终,总和z要与我们的a进行比较)
2023-07-04 11:22:58
239
4
原创 总结:printf打印时需要的格式字符(占位符)
打印无8进制符号的8机制整数:%o,也可以在%o之前加上l,%lo表示以8进制打印long型的整数,与%d的使用方式相同,%llo表示以8进制打印long long型的整数。打印指数计数法的浮点数:%e,%e可以加上l,%le与lf用法一致(如果系统支持十六进制格式的浮点数,可以用%a来打印,&la也与%lf用法一致)在C语言中,printf有许多不同的打印格式,这些格式都是我们需要去了解的,下面我将简单讲解一下需要打印不同的类型时,%后面需要加的字母。打印有8进制符号的8机制整数:%#o。
2023-06-20 20:27:28
5135
4
原创 初识编程,初入CSDN
大家好,我是一名专升本成功后即将步入大三生活的代码小白,这也是我首次注册CSDN并且写一篇自己的博客。都说一入代码似入海,学习代码是一个长久的过程,那最重要那必然是坚持。代码有很多种类,虽说我入坑较晚,但我通过观看网上相关代码内容,了解下来,最终还是选择了c语言作为我刚开始进入的起点(毕竟C生万物嘛),决定之后通过从c开始,后续去了解更多代码相关知识。
2023-06-11 10:49:27
211
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人