- 博客(36)
- 收藏
- 关注
原创 matlab——文本数据处理(一)
ASCII编码表是一开始的为表示字符而创造的,可显示的有20-126,其他还有不可显示的控制字符。Unicode转换格式的缩写,直译就是unicode的转换格式,后面的8、16和32分。个汉字同样也被视为一个字符.实际上,我们在生活中读到的文本都是由各种字符组成的.别代表存储每种字符编码所需的最少的比特位数.关于这一块的知识点比较复杂,感兴趣的。首先我们介绍字符的概念.字符是文本的最基本单元,在英文语境中,它包括字母、数。存储在计算机中的所有数据都是以二进制的形式表示的,由字符组成的文本数据也是一。
2025-04-03 20:14:49
571
原创 c++必修:容器list
带头双向循环的结构,类似我们以前学的链表吗,他物理结构不是连续 的,逻辑顺序是连续的。这里的自定义类型析构要释放每一个空间这里构造也是四个构造,和上一节vector一样的。
2025-03-15 00:45:09
307
6
原创 c++:迭代器的失效
insert 和erase会失效,要更新后去访问,就是用返回值iterator,但是我们一般不这样干,因为即使这样std库里也不允许访问,会进行检查。n个val构造会和上面的迭代器区间构造的函数重载冲突,且只有int 和int型与上面模板的迭代器区间构造冲突。用for循环进行拷贝,这时候默认类型不管,自定义类型会调用他自己的拷贝构造,避免了野指针问题。空间了,所以析构时候会把值清空,这时候虽然空间存在,但是析构掉了,随机值就来了。我们自己写的失效会报错,但是vs会强制检查,直接报错,不让你检查。
2025-03-09 16:40:18
367
3
原创 c++: 容器vector
C++ 中的 vector 是一种序列容器,它允许你在运行时动态地插入和删除元素。vector 是基于数组的数据结构,但它可以自动管理内存,这意味着你不需要手动分配和释放内存。与 C++ 数组相比,vector 具有更多的灵活性和功能,使其成为 C++ 中常用的数据结构之一。vector 是 C++ 标准模板库(STL)的一部分,提供了灵活的接口和高效的操作。C++ 中的 vector 是一种序列容器,它允许你在运行时动态地插入和删除元素vector本质和 string一样也是模板。
2025-03-08 21:34:08
998
9
原创 LeetCode刷题--杨辉三角
如同我们用vv[i][j]来访问具体每一个三角形第i行第i个。相当于 vv.operator[i].operator[j].最后设置每个位置为 vv[i][j] = vv[i - 1][j] + vv[i - 1][j - 1];第一个 vv.operator[]是vector < int > * 类型第二个才是int* 型的。输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]把每一行的vector< int>里的每行递增都设为1。原理就像是二维数组一样。
2025-03-08 14:57:01
223
2
原创 string的模拟实现
这里要取一段文字后第一段空格后的字母个数必须要用getlin提取,因为用cin的话会遇到‘’终止。如果(len==npos||len>=_size-pos)一般const成员变量不能在声明定义,但是整型npos可以。然后还不行判断条件是end>=pos但是数据类型也不一致。pos是size_t不会为负数,所以要改成int。这里可以通过[]修改不是const修饰的str.不想强转的也可以直接用第二种方法。范围小一般向范围大的进行提升。<<和>>自定类型要自己写。注意自己赋值给自己的情况。
2025-01-19 19:44:25
260
原创 C++: string(二)
1 我们这章学习了string的成员函数,在https://legacy.cplusplus.com/网站中可以把接口分为按不同标准分成好多类(如下面Capacity,Element access),下面是我们在string常用的其他不常用的我们要么有替代接口或者功能不常用2 c++是极度关注效率的语言,要是涉及到修改,删除,替换(尾插不算),这样时间复杂 度就会不好。
2024-11-17 17:49:52
863
原创 c++:string(一)
三种遍历方法,[],迭代器,范围for范围for底层是迭代器,所以只有容器中支持迭代器的才支持范围for因为数组底层和迭代器差不多,所以也支持范围forauto是一个自动识别的类型,在定义迭代器类型一般是很多的字母,可以用auto。
2024-11-13 19:55:24
904
15
原创 c++:模板和STL
class 类模板名// 类内成员定义这样的用处是比如我们以前不知道栈数据类型需要#typdefine xxx date,每次还要修改,这时候我们学过模板直接_array = new T[capacity];模版不建议声明和定义分离到两个文件.h 和.cpp会出现链接错误,具体原因后面会讲STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。
2024-11-08 19:17:12
769
原创 数据结构:七种排序及总结
归并排序的思想是通过二分找中间值,[left,中间值] ,[中间值+1,right]两个序列再二分,直到left>=中间值,然后通过递归返回原来的函数栈帧进行排序,因为只有logn个函数栈帧,每次栈帧内最坏排n个数据。序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排。从i=0开始遍历,每次i之前的序列都是有序的,通过判断当前i的值能够在i之前哪个位置,找到后直接插入,第一个循环是n,第二个循环最坏是n,所以是最大n^2。
2024-11-07 19:52:43
1832
11
原创 c++必修:类和对象(一)
• class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或者成员函数。• 为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前⾯或者后⾯加_ 或者 m开头,注意C++中这个并不是强制的,只是⼀些惯例,具体看公司的要求。• C++中struct也可以定义类,C++兼容C中struct的⽤法,同时struct升级成了类,明显的变化是。
2024-09-24 00:21:20
938
5
原创 初始c++:入门基础(完结)
引⽤不是新定义⼀个变量,⽽是给已存在变量取了⼀个别名,编译器不会为引⽤变量开辟内存空间,它和它引⽤的变量共⽤同⼀块内存空间。具体表示为:类型& 引⽤别名 = 引⽤对象;C++中为了避免引⼊太多的运算符,会复⽤C语⾔的⼀些符号,⽐如前⾯的<< 和 >>,这⾥引⽤也和取地址使⽤了同⼀个符号&,⼤家注意使⽤⽅法⻆度区分就可以。// 引⽤:b和c是a的别名int& b = a;int& c = a;// 也可以给别名b取别名,d相当于还是a的别名。
2024-09-19 21:56:17
1199
3
原创 数据结构:堆的算法
具体实现方法为,循环把头结点和尾结点进行交换,因为头结点是一个结构最大或者最小的,这时候我们把尾部结点减少一个,在进行向下调整,然后再进行交换,把次大或次小的数据放到最后一个,尾部结点减少一个,向下调整…我们可以先建立一个大小为k的堆,然后通过后N-k个数据依次和堆的头结点进行比较,判断是否入堆,如果入堆就向下调整到合适位置,这样数据读完我们就可以销毁文件,那么空吉安复杂度则只有建立的堆,然后堆的数据即为topk.因为大堆的头结点是最大的,一开始放到尾结点,这样就是升序,反之小堆调整则为降序。
2024-09-12 00:03:21
1208
1
原创 数据结构初阶:实现队列的两种方法
我们学习了队列那我们用来干什么?1可以用来食堂订餐的操作,订单的进入进出就会像队列一样2在以后操作系统的学习中,队列可以用来管理任务进度与进程切换。
2024-08-10 12:42:56
435
5
原创 数据结构初阶:栈的概念和如何模拟栈?
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。有两种结构和次类似,链表和数组,但是相比较来说数组的结构更加优良,因为。如图我们先录入数据1在栈底,然后再录入2,3和新的数据最新录入的数据就是栈顶的位置。这一步严格对应了前面的LIFO(Last In First Out)先进后出的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。
2024-08-06 11:35:37
356
1
原创 数据结构初阶必修:——时间复杂度和空间复杂度
空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。通过上面我们会发现大O的渐进表示法去掉了那些对结果影响不大的项,简洁明了的表示出了执行次数。1.时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法运行所需要的额外空间。一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法。例如上面的数组就是就是提前申请的空间。
2024-08-05 00:19:25
828
1
原创 深入了解指针(完结)
int (*pf) (int ,int ) 然后我们写一个void cal(int (*pf) (int ,int ))函数来接收其他函数的指针,这样就能实现代码复用的效果。这还是简单的计算器,写一个主函数,然后调用其他函数来实现功能,但是这样每次case后写的代码有好多都是重复的,我们可以再写一个函数来实现去除代码冗余的效果。cal就是b函数,写的众多的其他函数都是a函数。时,被调⽤的函数就是回调函数。如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数。
2024-05-23 20:14:52
323
1
原创 深入了解指针(三)
因为“hello bit”在内存中是单独的⼀个内存区域,是常量字符串,几个指针同时指向常量的时候,是同一块区域,但初始几个不同的数组就会有不同的内存块被开辟。(arr+0)+2)的意思是arr跳过0*[5]个字节的数组指针变量,再从头开始的第2+1个元素(因为是从0开始的)。这里arr的大小是5个整型也就是20个字节,所以arr+1就是跳过 20个字节后的数组指针变量。不同于以前的指针数组,数组指针变量是一个指向数组的指针,它的写法和指针数组类似。这就是⼆维数组传参的本质。这段代码的答案是3,
2024-05-19 16:44:15
363
1
原创 深入了解指针(二)
如果实参传过去的是整个数组,那么sizeof(arr)就是40个字节,如果是数组首元素的地址就是一个指针的变量。1.sizeof(数组名),sizeof中单独放数组名,这⾥的数组名表⽰整个数组,计算的是整个数组的⼤⼩,2.&数组名,这⾥的数组名表⽰整个数组,取出的是整个数组的地址(整个数组的地址和数组⾸元素。上述的代码模拟出⼆维数组的效果,实际上并⾮完全是⼆维数组,因为每⼀⾏并⾮是连续的。我们类⽐⼀下,整型数组,是存放整型的数组,字符数组是存放字符的数组。指针数组的每个元素都是⽤来存放地址(指针)的。
2024-05-16 21:11:37
313
2
原创 深入了解指针(一)
CPU访问内存中的某个字节空间,必须知道这个字节空间在内存的什么位置,⽽因为内存中字节很多,所以需要给内存进⾏编址(就如同宿舍很多,需要给宿舍编号⼀样)。我们可以简单理解,32位机器有32根地址总线,每根线只有两态,表⽰0,1【电脉冲有⽆】,那⼀根线,就能表⽰2种含义,2根线就能表⽰4种含义,依次类推。址线,就能表⽰2^32种含义,每⼀种含义都代表⼀个地址。地址信息被下达给内存,在内存上,可以找到该地址对应的数据,将数据在通过数据总线传⼊CPU内寄存器。先了解内存中最小的单位——————byte-字节。
2024-05-14 22:53:58
376
4
原创 深入指针练习:函数指针数组和回调函数来优化实现计算器功能
这样我们下次添加功能时就直接定义一个函数,不要像函数指针数组中一样有严格的下标关系,因为它是回调到calc函数中通过指针访问数组名实现计算功能的。我们以前用过swich结构来实现过简单计算器但是代码过于冗余,第一种方法是用函数指针数组来存放函数,然后套用do-while循环来实现功能。时,被调⽤的函数就是回调函数。如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数。我们通过函数指针数组来实现功能,把要写的函数都存到数组中,然后通过访问地址来实现功能。
2024-04-14 23:14:37
291
7
原创 简单算法;冒泡排序和用指针交叉互换
其中void Sort(int arr[],int sz)中的int arr[]可以写成int* arr因为二者都是数组名首地址。这里void Sort(int* p, int sz)如第一个一样也可以换成arr[],当然下面也要p[]也要换成arr[].这是一个模板我们也可以加入一些复杂的判断来进行程序。来写一点简单的算法复习c语言。
2024-04-13 18:37:41
255
4
原创 C语言中运算符“^”,“&”,“|”简介
左右二进制序列全为1为true,其余情况为fase。左右二进制序列有1则为true,全0则为fase。左右二进制序列相同为true 不同为fase。true返回0 fase返回1。true返回1,fase返回0。true返回1,fase返回0。
2024-03-24 17:46:29
249
2
原创 扫雷(超详解+全部码源)
如果有雷‘1’-‘0’=1所以八个位置雷个数就是M[x - 1][y] + M[x + 1][y] + M[x - 1][y + 1] + M[x + 1][y + 1] + M[x - 1][y - 1] +我们要再写一个int get()函数来统计所选位置周围8个方位的雷的个数返回值是int。因为为了防⽌越界,我们在设计的时候,给数组扩⼤⼀圈,雷还是布置在中间的9*9的坐。我们这次写的游戏要用两个棋盘实现,用到了分布的思想。◦ 把除10个雷之外的所有⾮雷都找出来,排雷成功,游戏结束。
2024-02-03 11:52:44
779
9
原创 函数递归和简单的例子(c语言)
其实递归程序会不断的展开,在展开的过程中,我们很容易就能发现,在递归的过程中会有重复计算,⽽且递归层次越深冗余计算就会越多。和while等循环相似我们实现让递归停下的条件就是写一个限制条件,达到条件递归自动停止。我们看到这个递归是每次都调用自己的main()函数没有限制条件所以一直打印hehe.我们在输入一个非1的整数值那么程序就会一直递归,直到到1为止。递归其实是⼀种解决问题的⽅法,在C语⾔中,递归就是函数⾃⼰调⽤⾃⼰。递归是学习C语⾔函数绕不开的⼀个话题,那什么是递归呢?在这里停止的条件就是n=1时。
2024-02-01 20:41:59
424
7
原创 猜数字游戏的实现及其几种玩法(c语言版)
这个代码用了do-while循环和swich循环选择1就是进行游戏,0是退出,选择其他数字就是重新选择。并且可以写两个函数。一个打印菜单函数menu(),一个游戏实现函数game().这个代码只有猜中了才会break跳出循环所以可以一直猜。这时候想要统计猜的次数只要int m=0,在每次循环时m++就行了。们写了一个主函数两个非主函数一个game();另一个时menu(),在主函数中调用两个函数,最终实现简单游戏。我们猜了两次就对了很幸运,所以显示两次。
2024-01-31 18:19:50
493
1
原创 操作符全解(超详细,新手必看)
我们看到在第6行中我们用复合赋值(要从右往左看),我们是先对a进行自增1然后把它赋值给b,所以此时a与b的值都是6。我们计算机中用到的计算都是用的算术操作符,因为这种操作符两边都有操作数,所以也叫双目操作符。这是一个特殊操作符,操作符两边没有操作数而是变量和语句。如a=6,b=8之类的,就是把6和8分别赋值给a和b但我们一般叫这个过程初始化。我们在学习敲代码就会涉及到一些计算,所以就会操作符,下面我们来讲解一下操作符的一些基础概念。我们只会在特定的语句中才会把前置++和后置++分的清楚,如复合赋值的时候。
2023-12-18 21:30:27
450
原创 while,do-while和for循环的介绍和比较
这个循环与while循环特别像,但是区别在于这个循环是先do(运行),再while(循环)。所以无论循环语句条件是否满足,这个循环至少运行一次,就是先do再while。同时我们因为比较简单我们可以发现while()的致命缺点,如果不在后面加上自变量的变化很容易造成死循环。3for循环和while循环的区别是for循环更完整,不易造成死循环。这个循环可以完成特定的功能,也就是至少要循环一次的功能。这个循环比较简单,while()里只需要填循环条件就行。小张的总结课堂:1这三个循环都可以实现循环语句的运行。
2023-12-05 00:24:25
100
原创 关于如何用rand(),srand()和time()函数创建简单的随机数
关于简单随机数如何生成,和srand(),rand(),tinme()函数如何运用。
2023-12-03 23:22:11
146
1
原创 一篇自我介绍——梦想的开始
C我会利用时间通过学校的课程和网上的网课还有信息进行系统性的学习,并规划自己的学习时间和休闲时间,然后来进行计算机语言的学习。A我是一名软件工程专业的学生,我对这个专业暂时的看法就是当码农,算不上多了解,希望以后通过学习更加了解。B我的编程目标最后是找到一个心慢意足的工作。毕业时候看就业情况吧,如果找不到合适工作就考研。D因为我是计算机专业的学生,我认为每周应该学习不低于20个小时精进自己的技术。E最后我最想进入的企业是科大讯飞,网易。任重还道远,,,,,,,
2023-11-22 19:32:52
70
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人