自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 string类模拟实现

这几种是比较常用的构造。

2025-01-14 13:44:52 272

原创 C&C++内存管理

pChar3是指针变量,存在栈中,*pChar3是由const修饰的,pChar3指向的内容不能修改,内容具有常属性,因此pChae3存在代码段中,也就是常量区。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。malloc只有一个参数,传的参数单位是字节,并且开辟空间后不会对数据初始化,返回的是指向已开辟空间的指针。calloc有2个参数,第一个是要开辟元素的个数,第二个是每个元素的字节大小,并且会为每个元素进行初始化为0的操作。

2024-11-15 16:23:23 960

原创 初识模板

对于非模板函数和同名函数模板,如果其他条件都相同,在调动时会优先调用非模板函数而不会从该模板产生出一个实例。类模板实例化与函数模板实例化不同,类模板实例化需要在类模板名字后跟<>,然后将实例化的类型放在<>中即可,类模板名字不是真正的类,而实例化的结果才是真正的类。概念 函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。如上代码,vector是类名。对象实例化后,推导出T是int类型,vector才是类,然后vector<int>才是类型。

2024-11-02 10:33:07 248

原创 类和对象(三)

内部类是一个独立的类,它不属于外部类,更不能通过外部类的对象去访问内部类的成员。因为先声明_a2,然后才声明_a1,所以初始化列表中会先初始化_a2,然后才是_a1,但将_a1赋值给_a2,_a1是随机值,所以_a2是随机值,然后才将1赋值给_a1,_a1的值是1。内部类就是外部类的友元类,参见友元类的定义,内部类可以通过外部类的对象参数来访问外部类中的所有成员。友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在类的内部声明,声明时需要加friend关键字。

2024-10-30 19:18:52 693

原创 类和对象(二)

看图中没有自己写拷贝构造,当s2拷贝s1时候,就会发生报错,因为没自己写就会默认进行拷贝构造,默认拷贝是按内存存储按字节拷贝,就是值拷贝,原封不动的拷贝,因此s2和s1中的_array指针变量指向同一块空间。这里创建一个Date类型的d对象,它的4个成员变量中有3个内置类型的变量,一个自定义的变量,调用默认构造会去初始化这个Time类型的对象,编译器会去寻找有没有写Time类型的构造,如果写了就调用写的Time类构造,没写就调默认构造进行初始化,其他的内置类型变量不会初始化。生成默认的构造函数。

2024-10-28 17:51:42 681

原创 类和对象(一)

成员变量命名规则的建议:看图中的日期类。

2024-10-25 14:10:31 849

原创 inline函数(内联函数)

生成一个可执行文件分为四部。预处理->编译->汇编->链接。在预处理阶段,头文件会被展开,这时候编译器会在调用函数的地方将它的声明先和调用的函数进行匹配,并找函数定义,如果函数名相同,参数相同,没找到函数定义,那么编译器在没有函数定义的时候就会先暂时不会报错,进行下步操作,会在最后链接这一步找到具体的函数定义的地址,并最终合并到一起。但因为内联函数会在调用的地方展开,因此不存在函数定义的地址,因此会通不过最后链接这一步。所有会报错。

2024-10-20 14:44:43 713

原创 七种排序算法

若gap==n/9的数组,全部逆序,每组比较36(1+2+3+4+....8),也就是n/9*36=4n次,但当gap==1的时候,无线接近n次。我们会定义一个变量gap,gap是相邻为gap的元素进行交换,希尔排序分为两步(1)预排序(只要gap不为1就是预排序),预排序的意义:大的数更快跳到后面去,小的数更快跳到前面来,gap越大跳的越快,越不接近有序,gap越小跳的越慢,越接近有序,大根堆:根结点的元素是最大的,并且根的左右孩子的比它小,也可以叫父亲结点,以此类推,小根堆就是它的相反过程。

2024-10-16 15:07:19 1191

原创 布隆过滤器

布隆过滤器是由布隆(Burton Howard Bloom)在1970年提出的 一种紧凑型的、比较巧妙的概率型数据结构,特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”,它是用多个哈希函数,将一个数据映射到位图结构中。此种方式不仅可以提升查询效率,也可以节省大量的内存空间。布隆过滤器可以是位图+哈希函数,就是通过多个哈希函数将该类型的元素转化为多个整型映射到不同的位置去,映射后就会产生许多问题,随着数据映射的次数越来越多,就会发生冲突,就是误判。

2024-10-07 12:13:10 1078

原创 位图的海量数据处理

位图是将每一个数映射在每一个对应的位上,一个字节是8个比特位,一个整型是32个比特位,也就是说,一个整型的32位能找到对应的32个元素,因此,我们能节省很多的空间。这个我们看题目,只找到出现一次的数,超过2次的我们就不要管了,如果超过3次,就当把两个二进制映射成11就行了,我们不需要管他出现几次,我们只看出现一次的数。这里采用的就是小端存储,看上图,地址的最后2位,74,75,76,77存的是01,00,00,00.这里是测试对应位的元素还在不在,在的话就返回true(1),不在就返回false(0)。

2024-10-07 12:08:10 1231

原创 红黑树

拿代码中的例子来说,用main()函数调用IsBalance()函数不能传递类里面的私有成员变量_root,我没有展示出来,只能在类里面再写一层函数_IsBalance(),在IsBalance()来调用_IsBalance(Node*root)并且传参给它私有成员变量_root。p是g的右孩子,cur是p的左孩子就是对称的,需要右左双旋。13(黑)->17(红)->25(黑)->27(红)->NIL(黑) (5)13(黑)->17(红)->25(黑)->22(红)->NIL(黑) (4)

2024-09-10 16:23:18 729

原创 AVL树

先看左下角,叶子节点2的左右子树高度均为0,所以他的平衡因子为0,结点3的右子树高度为0,左子树高度为1,所以平衡因子为-1,接着看5这个结点,它的左右子树均高度为0,所以平衡因子为0,再看根结点,它的左子树高度为2,右子树高度为1,所以平衡因子为-1,这下大家对平衡因子就有了解了。我们来分析一下,这里中间那条路径新增一个结点,高度由h+1变为h+2,最右边那个结点高度为h,由AVL规则可知,需要发生旋转,这里由于插入的结点在中间,需要2次旋转,由图可知,经过2次旋转,AVL树达到平衡。

2024-09-08 18:28:18 796 1

原创 C++内存和管理模板

2.接着说操作符operator new 和operator delete的用途,其实它俩就和C语言的malloc和free函数的用途一模一样,之所以在C++中要写成这种形式,是因为C++是面向对象的高级语言,大众需要看懂它们的意思,malloc和free函数开辟和释放空间失败后返回的是数字,但让别人看很难懂其中的意思,这时候operator new和operator delete就发挥了作用,它俩其实就是包装了malloc和free,它俩开辟和释放空间失败后就是处理。,这里就不过的赘述;

2024-01-18 16:49:03 887 1

原创 字符串函数和内存函数的实现

(注:strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容并且可修改。如果你试图将一个字符串追加到自身,那么源字符串的末尾将不再是null字符,而是源字符串的最后一个字符。strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记,strtok函数将保存它在字符串中的位置。1.这是一个查找字符串的函数,在第一个字符串中查找第二个字符串,并且返回第一次找到完整的第二个字符串的首地址。2.目标空间必须有足够的大,能容纳下源字符串的内容。

2023-07-11 16:26:53 225 13

原创 深度挖掘字符串算法和句子逆置算法

优快云作者panzii666我这次对句子算法的理解希望对大家有所帮助。

2023-06-05 20:57:01 170 6

原创 深度剖析数据在内存中的存储

整形和浮点型在内存中的存储形式有着明显不同的区别,为了帮助对这方面还不太了解的小伙伴,我将深度解析这方面的内容。数据类型详细介绍整形在内存中的存储:原码、反码、补码大小端字节序介绍及判断浮点型在内存中的存储解析char //字符数据类型short //短整型int //整形long //长整型long long //更长的整形float //单精度浮点数。

2023-06-02 16:46:37 170 10

原创 C语言简单实现扫雷

printf(“---------扫雷游戏----------\n”);3.为了防止在统计坐标周围的雷的个数的时候越界,我们让数组设计为11。2.设置两个二维数组,一个存放雷的信息,一个存放布置好的雷的信息。提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。这是所有代码的头文件,包括函数调用的声明,宏。1.扫雷游戏需要储存布置好雷的信息,需要一个9。printf(“需要打印的坐标>:\n”);//该位置不是雷,统计周围有几个雷。函数实现文件 game.c`//生成随机坐标,生成雷。

2023-06-01 20:30:14 315

原创 计算一个整数二进制序列中1的个数

/{//法1count++;n /= 2;*///法2count++;*///}//法3i < 32;i++)count++;int main()int n = 0;;return 0;

2023-05-21 14:42:34 101 3

原创 C语言简单实现三子棋

printf("不能落子,请重新输入\n");printf("输入非法,请重新输入\n");printf("请输入坐标,中间使用空格\n");printf("退出游戏\n");printf("选择错误\n");printf("请输入数字>");printf("玩家赢\n");printf("电脑赢\n");printf("平局\n");printf("玩家下棋>:\n");printf("电脑下棋>:\n");

2023-05-10 10:54:23 102 2

原创 对编程的有感而发

学校的学习任务繁重,但我们应该心里明白,哪些课重要,哪些课不重要,把课余的时间用于编程,我觉得是一件艰巨但很快乐的事;不说每周花多少时间,我会每天都跟编程接触,让自己对编程有着不断加深的了解!我叫潘~~,是一名软件工程专业大一学生。在接下来的一年将沉下心来学习,我对游戏开发比较感兴趣。我向往的大公司就是腾讯,或米哈游一类的公司!他们是国内游戏领域的顶端公司。希望自己有一天能够去那里!

2023-04-01 10:40:51 105

空空如也

空空如也

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

TA关注的人

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