- 博客(49)
- 收藏
- 关注
原创 C++内存管理
对于上述操作,C语言的动态内存存储也都可以实现的,那为什么祖师爷还要创建new和delete呢?// new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间还会调用构造函数和析构函数,有时候我们会忘记调用free函数,导致空间的浪费class sui{public::_sui(sui)~sui() {private:int _sui;delete p2;// 内置类型是几乎是一样的。
2024-09-10 08:43:34
859
原创 C++万字解析类和对象
/与结构体定义格式类似class Date//类域 Date类名//可以存放变量、函数public://公共域_day = day;private://私有域// 为了区分成员变量,⼀般习惯上成员变量// 会加⼀个特殊标识,如_ 或者 m开头int _year;int _month;int _day;//使用(.)操作符d.print();
2024-09-08 20:21:18
1356
原创 C++入门基础(内容太干,噎住了)
文章目录1.缺省参数2.函数重载2.1重载条件:1.参数类型不同2.参数个数不同3.参数类型顺序不同 2.2不做重载条件情况:1.返回值相同时2.当全缺省遇见无参数3.引用3.1引用特性:3.2引用的使用C++支持在同一作用域中出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同或者类型不同。这样C++函数调用就表现出了多态行为,使用更灵活。C语言是不支持同一作用域中出现同名函数的。 cpp会根据函数中参数类型进行函数的匹配2.参数个数不同cpp会根据函数中参数类个数进行函数的匹配
2024-09-08 20:16:43
1016
原创 GPT-SoVITS-文本转语音(你的声音不再是唯一)
训练完成,获取训练文件(保存至weights文件夹),在对该位置打钩,静静等待。RVC:可利用语音转语音,对于变声器方面强于GPT-SoVITS。选择训练文件,提供参考音频与音频的文本(纯声音,最好无背景音乐)然后输入你所需要的文本,合成语音,就可以获得你想要的语音。GPT-SoVITS:可使用文本转语音(也可使用RVC)GPT-SoVITS与RVC同为花儿不哭大佬的产品。训练格式化工具:为我们训练模型的地方,与RVC类似。微调训练:则是我们训练过后的文件,进行声音的调整。推理:则是我们文本转语音的地方。
2024-08-07 21:17:01
492
原创 数据结构-常见的七大排序
1. 希尔排序是对直接插入排序的优化。2.当gap > 1时都是预排序,目的是让数组更接近于有序。当gap == 1时,数组已经接近有序的了,这样就会很快。这样整体而言,可以达到优化的效果。我们实现后可以进行性能测试的对比。3. 希尔排序的时间复杂度不好计算,因为gap的取值方法很多,导致很难去计算,因此在好些树中给出的希尔排序的时间复杂度都不固定。
2024-08-07 20:47:03
1076
原创 RVC-AI声音克隆-你的声音不再是唯一
是一个基于Hubert模型的AI语音转换工具,可以实现男女声的互换和降噪。本文将要介绍RVC的安装和使用方法。
2024-07-30 23:11:59
702
原创 【数据结构】二叉树OJ题_单值二叉树_相同的树
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回true;否则返回false。truefalse。
2024-07-19 18:51:13
526
原创 【数据结构】详解堆
升序:建大堆降序:建小堆(1)升序:建大堆【思考】排升序,建小堆可以吗?-- 可以(但不推荐)。首先对 n 个数建小堆,选出最小的数,接着对剩下的 n-1 个数建小堆,选出第二小的数,不断重复上述过程。【时间复杂度】建 n 个数的堆时间复杂度是 O(N),所以上述操作时间复杂度为 O(N²),效率太低,关系变得杂乱,尤其是当数据量大的时候,效率就更低。同时堆的价值也没有被体现出来,这样不如用直接排序。排升序,因为数字依次递增,需要找到最大的数字,得建大堆。首先对 n 个数建大堆。
2024-07-16 21:28:15
1237
原创 数据结构队列(深入链表的应用)
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为出队列:进行删除操作的一端称为队列就像是隧道(先进先出);队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低。
2024-06-02 11:34:02
982
原创 每日一题——栈的OJ题(有效的括号)
当数组走完,右括号恰好能完全匹配,但是呢,栈却还存留一个。每个右括号都有一个对应的相同类型的左括号。每个右括号都有一个对应的相同类型的左括号。这里运用到栈的思想,所以这里先要实现栈。为了解决这个问题,我们需要判NULL。左括号必须用相同类型的右括号闭合。左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。左括号必须以正确的顺序闭合。为了方便分析:加大一点点剂量。对于传址问题,这是很常见的。每次取栈顶数据与之匹配。
2024-06-02 10:10:30
342
原创 力扣 合并两个有序数列||移除元素
给你两个按排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你nums2到nums1中,使合并后的数组同样按排列。最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对这种情况,nums1的初始长度为m + n,其中前m个元素表示应合并的元素,后n个元素为0,应忽略。nums2的长度为n。需要合并 [1,2,3] 和 [2,5,6]。合并结果是 [,2,,5,6] ,其中斜体加粗标注的为 nums1 中的元素。[1]
2024-05-14 14:35:26
865
原创 探索数据结构(让数据结构不再成为幻想)
算法(Algorithm)就是定义良好的计算过程,他取出一个或一组数据为输入,产出一个或一组的值为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。排序,递归与分治,回溯,DP,贪心,搜索算法、二分查找、水桶法等等;算法往往数学密切相关,就如数学题一样,每道数学题都有不同的解法,算法也是同理。
2024-05-08 10:19:11
892
原创 什么是编译与链接呢!
int b = a;//当进行预处理时,此语句将变为 int b = 10;而将#define删除return 0;2.处理所有的条件编译指令,如: #if、#ifdef、#elif、#else、#endifint main()int a = 10;int b = 20;int c = 30;//d ==30#if 0//如果为1,则正常运行下句#endif//相当于注释掉此句return 0;3.处理#include 预编译指令,将包含的头文件的内容插入到该预编译指令的位置。
2024-04-29 21:04:33
318
原创 动态内存的管理(内存储存的god)
数组在申明的时候,必须指定数组的长度,数组空间一旦确定了大小不能调整对于空间的开辟,固定的空间大小有时候不能满足我们的需求。这个时候我们就需要自己开辟一段空间。
2024-04-21 14:43:51
1002
原创 数据在内存中的存储(探索内存的秘密)
一、整数在内存中的存储一、整数在内存中的存储整数的2进制表示方法有三种,即 原码、反码和补码三种表示方法均有和两部分,符号位都是,而,剩余的都是数值位。正整数的原、反、补码都相同。原、反、补码都相同负整数的三种表示方法各不相同。原码:直接将数值按照正负数的形式翻译成⼆进制得到的就是原码。反码:将,其他位依次按位取反就可以得到反码。补码:反码+1就得到补码。
2024-04-19 20:32:53
1027
原创 C语言结构体—自定义类型—struct
int age[4];}s1,s2;//创建两个变量s1,s2也许初期看不习惯,容易疑惑,其实这就相当于两步合并一步:先定义结构体stu,在定义结构体变量;int age[4];第三种:匿名结构体struct {int age[4];}s1,s2;在后面的学习中,我们会也利用结构体的嵌套实现链表:在这里看不懂也没有关系,up主会在后期的博文中讲解这一板块//链表的运用int data;//结构体嵌套初始化//结构体嵌套初始化结构成员访问操作符1、结构体成员的直接访问。
2024-04-15 17:22:15
390
1
原创 C语言—内存函数的实现和模拟实现(内存函数的丝绸之路)
函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。和memcpy的差别就是memmove函数处理的源内存块和目标内存块是可以重叠的。如果source和destination有任何的重叠,复制的结果都是未定义的。如果源空间和目标空间出现重叠,就得使用memmove函数处理。这个函数在遇到 '\0' 的时候并不会停下来。对于重叠的部分,可以交给memmove处理;1. memcpy 使用和模拟实现。2. memmove 使用和模拟实现。
2024-04-15 10:24:13
591
1
原创 C语言—字符函数与字符串函数(字符问题变简单的关键之技)
1.字符分类函数正文开始:在编程过程中,我们经常要处理字符和字符串,为了方便操作字符和字符串,C语⾔标准库中提供了 一系列库函数,接下来我们就学习⼀下这些函数。1.字符分类函数C语⾔中有⼀系列的函数是专门做字符分类的,也就是⼀个字符是属于什么类型的字符的。这些函数的使⽤都需要包含⼀个头⽂件是ctype.h练习:写⼀个代码,将字符串中的小写字⺟转⼤写,其他字符不变。2.字符转换函数//将参数传进去的大写字母转小写//将参数传进去的小写字母转大写。
2024-04-14 18:26:46
619
2
原创 C语言之九九乘法表||素数||最小公倍数
我们需要一个变量来代替素数,其次我们需要两个变量来判断他是否能够整除和整除的值,最后因为要判断是否只有本身和1能够整除,我们可以引用一个变量来统计它能够整除的数的个数;然后将最小的数的值赋给c,然后让a和b依次去除以c,c每次减少1,第一个能与a和b整除就为最小公倍数。以列或行观察总会有一个不变的量乘以1,2,3,4,5,6,7,8,9。由最小公倍数的意义得需要三个变量,其中两个是需要有用户特定的。以a(除数),b(被除数),c(余数),d(个数)为例。然后在+1在乘以1,2,3,4,5,6,7,8,9。
2024-04-12 22:54:02
631
1
原创 C语言详解指针(指针海洋的探索,将传值与传址刻在心里)
目录一、指针的概念1.1内存与地址 例子:二、变量的指针与指针变量2.1、指针变量的定义及使用1、指针变量的定义2、指针变量的使用2.2 指针变量的大小2.3、指针+-整数 2.4、void*指针三、指针的运算1、指针+- 整数2、指针-指针3、指针的关系运算6. 野指针6.1、野指针成因6.2、如何规避野指针6.3、注意指针不要越界6.4、当指针不再使用时,可以将其置为NULL,指针使用前,判断其有效性6.2、assert函数四、多级指针及指针数组(1)多级指针对于指针的学习还很多,今天先讲到这里了要知道
2024-04-12 22:50:07
1777
原创 C语言——函数递归
递归是学习C语⾔函数绕不开的⼀个话题,那什么是递归呢?递归其实是⼀种解决问题的⽅法,在C语⾔中,递归就是函数⾃⼰调⽤⾃⼰。写⼀个史上最简单的C语⾔递归代码:main();//在main函数调用mainreturn 0;上述就是⼀个简单的递归程序,只不过上⾯的递归只是为了演⽰递归的基本形式,不是为了解决问题,代码最终也会陷⼊死递归,导致栈溢出(Stack overflow);递归的思想:把⼀个⼤型复杂问题层层转化为⼀个与原问题相似,但规模较小的⼦问题来求解;
2024-04-05 15:20:49
900
1
原创 VS实用调试技巧(检验程序的法宝)
bug 一词的原意是“昆虫”或“虫子”;而在电脑系统或程序中隐藏着的一些未被发现的缺陷或问题,人们也叫它“bug”。“Bug”的创始人格蕾丝·赫柏(Grace Murray Hopper),是一位为美国海军工作的电脑专家,也是最早将人类语言融入到电脑程序的人之一。而代表电脑程序出错的“bug” 这名字,正是由赫柏所取的。1947年9月9日,赫柏对Harvard Mark II设置好17000个继电器进行编程后,技术人员正在进行整机运行时,它突然停止了工作。于是他们爬上去。
2024-04-05 12:19:32
769
1
原创 C语言—函数(大化小方式的心脏)
了解了库函数,我们的关注度应该聚焦在⾃定义函数上,⾃定义函数其实更加重要,也能给程序员写 代码更多的创造性。ret_typefun_name形式参数ret_type:是指函数返回类型fun_name :是函数名括号中放的是形式参数{}:括起来的是函数体为了好理解,这里我们把函数比作工厂,工厂得输入原材料(可以是多个参数),经过加工得到产品(计算结果);ret_type是⽤来表⽰函数计算结果的类型,有时候返回类型可以是void,表⽰什么都不返回fun_name。
2024-01-30 23:07:38
1012
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人