自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 10.模拟实现string类

前面我们了解了string类的常用接口使用,那么现在就来模拟实现一下。

2024-10-11 20:02:41 732 3

原创 09.string类的常用接口讲解

3.

2024-10-05 23:23:48 646 2

原创 08.STL简介

1. 什么是STL STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的 组件库,而且是一个包罗数据结构与算法的软件框架2.发展历史1.起源与早期探索(20世纪80年代初期):- STL最早由美国计算机科学家Alexander Stepanov在20世纪80年代初期提出。当时他在惠普(Hewlett-Packard)公司的实验室工作,认为程序员需要一种通用的编程模式来更方便地实现各种数据结构和算法,于是开始着手设计

2024-10-03 19:41:22 917 2

原创 07.模板初阶

类模板其实和函数模板相似,还记得当初我们在C语言实现stack的时候,我们使用typedef来修改数据类型,但是这种情况下,不能两个不同类型的数据同时存在,只能使用两个栈去存放。该语句不能通过编译,因为在编译期间,当编译器看到该实例化时,需要推演其实参类型通过实参a1将T推演为int,通过实参d1将T推演为double类型,但模板参数列表中只有一个T,编译器无法确定此处到底该将T确定为int 或者 double类型而报错。如果类型不匹配,编译器会尝试进行隐式类型转换,如果无法转换成功编译器将会报错。

2024-10-02 22:58:44 728 2

原创 06.C/C++内存管理

在这里C++的内存管理相较于C作出了许多升级,下面我们就来了解一下。我们先来看一下下面的问题,温习一下C的内存分布在 C/C++中,内存主要分为以下几个部分:一、栈(Stack) 1. 存储内容: - 局部变量:函数内部声明的非静态变量。- 函数参数:传递给函数的参数。- 函数调用信息:如返回地址等。2. 特点: - 先进后出(LIFO)的数据结构。- 内存由编译器自动管理,当函数被调用时分配空间,函数返回时自动释放。- 空间相对较小,通常几兆字节。 二、堆(Heap)

2024-09-29 23:53:24 1154

原创 05.C++类和对象(下)

•之前我们实现构造函数时,初始化成员变量主要使用函数体内赋值,构造函数初始化还有一种方式,就是初始化列表,初始化列表的使用方式是以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。•每个成员变量在初始化列表中只能出现一次,语法理解上初始化列表可以认为是每个成员变量定义初始化的地方。•引用成员变量,const成员变量,没有默认构造的类类型变量,必须放在初始化列表位置进行初始化,否则会编译报错。•。

2024-08-24 23:49:19 890 3

原创 04.C++类和对象(中)

默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。一个类,我们不写的情况下编译器会默认生成以下6个默认成员函数,需要注意的是这6个中最重要的是前4个,最后两个取地址重载不重要,我们稍微了解一下即可。其次就是C++11以后还会增加两个默认成员函数,移动构造和移动赋值,这个我们后面再讲解。默认成员函数很重要,也比较复杂,我们要从两个方面去学习:•第一:我们不写时,编译器默认生成的函数行为是什么,是否满足我们的需求。•。

2024-08-08 22:36:02 660 2

原创 03.C++类和对象(上)

•class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。•为了区分成员变量,一般习惯上成员变量会加一个特殊标识,如成员变量前面或者后面加_ 或者 m开头,注意C++中这个并不是强制的,只是一些惯例,具体看公司的要求。•。

2024-07-27 00:33:40 1128 6

原创 02.C++入门基础(下)

引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。比如:水浒传中李逵,江湖上人称"黑旋风";林冲,外号豹子头;类型& 引用别名 = 引用对象;C++中为了避免引入太多的运算符,会复用C语言的一些符号,比如前面的<< 和 >>,这里引用也和取地址使用了同一个符号&,大家注意使用方法角度区分就可以。如下图:引用其实就是取别名,本质上还是a,只不过给他起了个外号,同样,在对a引用时,改变引用也会改变它本身。

2024-07-23 22:23:19 849 5

原创 01.C++入门基础(上)

•定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。•namespace本质是定义出一个域,这个域跟全局域各自独⽴,不同的域可以定义同名变量,所以下面的rand不在冲突了。•C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/类型出处(声明或定义)的逻辑,所以有了域隔离,名字冲突就解决了。

2024-07-18 23:32:25 904 2

原创 数据结构:排序

1.直接选择排序思考非常好理解,但是效率不是很好。实际中很少使用2.时间复杂度:O(N^2)3.空间复杂度:O(1)4.稳定性:不稳定代码实现:我们先来实现单趟排序,我们定义一个变量begin和一个变量mini(其中mini是最小数字的下标,begin是依次排序时的下标)先遍历一遍找到最小的,将其下标赋值给mini,循环结束后,将下标为begin和mini的两个数字交换,然后begin++接下来找第二小的,重复以上步骤。

2024-07-08 15:40:14 999 4

原创 数据结构之二叉树

之前我们了解了树的性质,并简单介绍了一下二叉树,那么接下来我们就来更多地来学习一下二叉树。在学习二叉树之前我们先来学习一下二叉树的遍历,但是遍历需要先创建一个二叉树,那么为了方便理解和学习,我们先来暴力创建一个二叉树,介绍完二叉树的遍历之后,我们就可以使用二叉树的遍历来创建二叉树。当然我们要先一个二叉树结构,如下图:我们先来暴力创建一颗二叉树,就以下图所示创建:由于这里我们使用数字来创建,所以不要忘记先将char修改为int。其实简单点就是:前序:根 左子树 右子树中序:左子树 根 右子树后序:左子树 右子

2024-06-12 21:50:32 2068 2

原创 堆排序和TOP-K问题

堆排序即利用堆的思想来进行排序,总共分为两个步骤:1.升序:建大堆降序:建小堆2.建堆和堆删除中都用到了向下调整,因此掌握了向下调整,就可以完成堆排序。这里第1步可能大家会产生疑问,为什么升序建大堆,降序建小堆?不能升序建小堆,降序建大堆吗?我们就以降序建大堆为例,来讲解一下:就以下面图片的大堆为例这里我们要降序,直接取堆顶最大值,但是要怎么取第二个大的呢?这时候就要将堆顶以下的数据重新建成大堆,再取堆顶但是,这样的话关系就全乱了,8和7刚还是兄弟,现在变成父子了,而且还会增加时间复杂度。

2024-05-28 20:52:20 309 2

原创 数据结构:二叉树和特殊的二叉树——堆

的。

2024-05-23 22:54:06 1067 1

原创 数据结构:栈和队列

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。栈中的数据元素遵守后进先出LIFOLast In First Out)原则。压栈:栈的插入操作叫做进栈压栈入栈,。出栈:栈的删除操作叫做出栈。。后进先出:就像一个只有一端开口的容器,最后进入栈的元素最先被弹出。

2024-05-15 22:03:39 672 2

原创 C语言实现简易版贪吃蛇

我们封装一个WelcomeToGame函数来实现,在打印之前得要定位光标(在合适的地方打印出来看着会协调),所以我们再封装一个SetPos函数来定位光标。

2024-05-10 22:19:18 970 2

原创 数据结构:双链表的实现

在List.h文件中,首先创建一个结构体用来存放节点的信息,这里和单链表的区别是我们额外增加了一个结构体指针成员prev用来指向上一个节点的指针。接下来我们来实现双链表的增删查改操作。

2024-04-20 22:43:20 622 3

原创 数据结构:单链表的实现

为什么需要指针变量来保存下一个节点的位置?链表中每个节点都是独立申请的(即需要插入数据时才去申请一块节点的空间),我们需要通过指针变量来保存下一个节点位置才能从当前节点找到下一个节点。这样就不会造成空间浪费了。

2024-04-14 21:42:22 1239 1

原创 顺序表实现通讯录项目

分别是void* ptr ,ptr是指向要接收数据的缓存区的指针,我们这里要接收的是从pf中读取的数据,所以我们要&info取出info的地址存放在ptr中接收pf中的地址(获取其中的数据);size_t size则是每次读取的字节数,我们这里读取存放数据的结构体的大小;size_t count是读取的元素个数,我们这里读取一个结构体;两者的区别是前者fread是从FILE* stream中读取数据到void* ptr中,而fwrite则是将void* ptr中的数据写入到FILE* stream中。

2024-04-07 22:08:02 809 4

原创 实现顺序表的增删查改

所以。这里我们就来使用动态顺序表来实现增删查改等操作首先我们创建一个SeqList.h的头文件和一个SeqList.c的源文件。我们在头文件中进行对函数的声明,首先我们定义一个自定义类型的结构体,这个结构体就是动态顺序表,结构体成员分别为SLDataType* arr,int size, int capacity。注意我们这里对int进行重定义为SLDateType,我们对顺序表操作数据时不一定就是整型,也可以其他内置类型如字符型,如果我们将它写死为int* arr,那么后续要修改时就非常繁琐,而对Int进

2024-04-03 21:37:58 1041 6

原创 关于文件操作(一)

磁盘(硬盘)上的文件是文件。例如我们电脑上的C盘内的文件夹等程序文件、数据文件(从文件功能的角度来分类 的)。2.1程序文件程序文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows 环境后缀为.exe)。

2024-03-28 20:39:35 424

原创 自定义类型:结构体

位段的声明和结构是类似的,有两个不同:1. 位段的成员必须是 int、unsigned int 或signed int ,在C99中位段成员的类型也可以 选择其他类型。2. 位段的成员名后边有⼀个冒号和⼀个数字。

2024-03-24 20:50:13 750

原创 数据在内存中的存储

整数的2进制表示方法有三种,即 原码、反码和补码 三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位最高位的一位是被当做符号位,剩余的都是数值位。:直接将数值按照正负数的形式翻译成⼆进制得到的就是原码。:将原码的符号位不变,其他位依次按位取反就可以得到反码。:反码+1就得到补码。为什么呢?在计算机系统中,数值⼀律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统⼀处理;

2024-03-24 16:22:06 1000

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

我们要将arr1,数组名就是首元素地址,从前向后拷贝20个字节也就是5个整型元素,拷贝到arr1+2,首元素地址向后移动两个整型,也就是指向3的地址,从3开始被拷贝20个字节。arr1的地址传给src,arr1+2的地址传给dest,此时dest大于src,如果我们从前向后拷贝,当1拷到3时,3的位置就变成了1,2拷到4,4的位置就变成了2,3拷到5时,由于3的位置已经变成了1,所以3拷不到5的位置,5的位置只会被拷成1,也就是说我们要拷贝的内存会被覆盖,此时我们应该如何避免呢?

2024-03-15 23:53:58 823 2

原创 标题:机器人工程专业学生的编程学习之路

总之,作为一名机器人工程专业的学生,我将全力以赴学习编程,提高自己的技能,为未来的职业发展做好充分准备。我对机器人工程充满了兴趣,这个专业让我有机会将理论知识与实际应用相结合,创造出能够改变世界的创新技术。关于我最想进入的 IT 公司,我希望有机会能加入一家具有创新精神和技术实力的公司。我希望在这样的公司中,我能够与优秀的团队一起合作,参与到具有挑战性的项目中,不断提升自己的技术水平和综合素质。大家好,我是一名机器人工程专业的学生。今天,我想在这里分享一下我学习编程的目标、计划以及我对未来职业的规划。

2024-01-16 23:03:09 358

空空如也

空空如也

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

TA关注的人

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