- 博客(38)
- 收藏
- 关注
原创 C++初阶—模版进阶
一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。【优点】模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生增强了代码的灵活性【缺陷】模板会导致代码膨胀问题,也会导致编译时间变长出现模板编译错误时,错误信息非常凌乱,不易定位错误。
2025-03-20 16:21:57
892
原创 C++初阶—stack和queue类
queue的文档介绍翻译:1. 队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端提取元素。2. 队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从队尾入队列,从队头出队列。3. 底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类。empty:检测队列是否为空size:返回队列中有效元素的个数front:返回队头元素的引用back:返回队尾元素的引用。
2025-03-12 15:30:05
880
原创 C++初阶—list类
list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好。
2025-02-27 14:56:24
1116
原创 C++初阶—vector类
(constructor)构造函数声明接口说明vector()(重点)无参构造构造并初始化n个val(重点)拷贝构造使用迭代器进行初始化构造。
2025-02-14 10:16:36
967
原创 C++初阶—string类
C语言中,字符串是以'\0'结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。
2025-01-27 15:47:17
785
原创 C++初阶—C&C++内存管理
/malloc没有办法很好支持动态申请的自定义对象初始化//构造函数是实例化对象的时候自动调用,现阶段无法显示调用//new主要针对自定义类型设计//对于自定义类型,开空间+调用构造函数初始化//支持传参//对于自定义类型,调用析构函数+释放空间delete p2;delete p3;//多个对象//new多个对象并初始化//1.有名对象A aa1(1);
2025-01-10 15:22:18
1120
原创 C++初阶—类与对象(中篇)
public://// 如果用户显式定义了构造函数,编译器将不再生成//{//}private:int _year;int _month;int _day;// 将Date类中构造函数屏蔽后,代码可以通过编译,因为编译器生成了一个无参的默认构造函数// 将Date类中构造函数放开,代码编译失败,因为一旦显式定义任何构造函数,编译器将不再生成// 放开后报错:error C2512: “Date”: 没有合适的默认构造函数可用Date d1;return 0;//示例1。
2024-12-07 09:14:33
788
原创 C++初阶—类与对象(上篇)
需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。2.类声明放在.h文件中,成员函数定义放在.cpp文件中。成员函数名前需要加类名一般情况下,更期望采用第二种方式。注意:后续为了方便演示使用方式一定义类,在工作中尽量使用第二种。// 下面的函数,形参和成员变量同名,很难区分public:// 这里的year到底是成员变量,还是函数形参?// 所以一般都建议这样public:private:int _year;
2024-11-28 15:19:43
820
原创 C++初阶—C++入门
在早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量,但遗憾的是一直没有人去使用它。auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。int a = 0;auto b = a;//auto根据右边的值自动推导左边的类型//c是int*//d是a的引用//普通场景没有什么价值//类型很长,就有价值,简化代码//上方代码简化后//查看类型【注意】
2024-11-26 14:21:02
703
原创 初阶数据结构—栈和队列
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,。出栈:栈的删除操作叫做出栈。。
2024-05-23 09:53:59
1544
原创 初阶数据结构—顺序表和链表
新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点。假设A链表相交之前的节点数是a,B链表相交之前的节点数是b,相交(含相交节点)之后的节点是c。由于快指针的速度是慢指针的2倍,相当于同样的时间快指针走过的距离(即链表的长度)是慢指针的两倍。假设链表长度为n,快指针先走k步,那么快慢指针的距离就是k,然后快慢指针同时往后走,那么当快指针遍历完链表时,慢指针走的距离就是n-k。
2024-05-10 15:08:50
1279
1
原创 初阶数据结构—算法的时间复杂度和空间复杂度
数据结构是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。2.什么是算法?算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。
2024-04-02 21:11:28
1165
1
原创 C语言学习记录—进阶作业(通讯录文件版本)
2. 添加一个函数,在通讯录打开的时候,可以把文件中的信息加载到通讯录中。1. 添加一个函数,在退出通讯录的时候把信息到保存到文件中。
2024-01-12 22:41:00
463
原创 C语言学习记录—进阶作业(通讯录静态版本)
程序开始时展示菜单,提供增加联系人、删除指定联系人、 查找联系人、修改联系人、排序、显示联系人、退出功能。即使用do while循环保证程序可以重复执行,用switch语句实现选择功能。3. 创建通讯录的结构体。即使用联系人结构体创建数组,并且创建一个计数器变量,用于记录通讯录中联系人的个数(即有效信息)。人的信息:名字+年龄+性别+电话+地址。contact.c 通讯录相关的实现。contact.h 通讯录相关的声明。2. 创建联系人信息的结构体。4. 实现上述提到的各功能。3. 删除指定联系人。
2024-01-12 21:01:08
556
原创 C语言学习记录—程序环境和预处理
_FILE__ //进行编译的源文件__LINE__ //文件当前的行号__DATE__ //文件被编译的日期__TIME__ //文件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义int main()if (!pf)//当pf为NULL时,!pf就是非空,非空为真,进入if内部,即pf为空指针时报错int i = 0;for (i = 0;i < 10;i++)//这些信息可以用于记录日志。
2024-01-09 16:35:44
1045
原创 C语言学习记录—C语言文件操作
磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。//写一个字符//character --这是要被写入的字符。该字符以其对应的 int 值进行传递。//stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了要被写入字符的流。//如果没有发生错误,则返回被写入的字符。如果发生错误,则返回 EOF,并设置错误标识符。//写文件char i = 0;i
2024-01-07 15:35:28
937
原创 C语言学习记录—动态内存管理
C分配一个size字节大小的内存块,返回一个指向该块开头的指针。这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。如果开辟成功,则返回一个指向开辟好空间的指针。如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。返回值的类型是void*,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定。如果参数size为0malloc的行为是标准是未定义的,取决于编译器。//malloc函数。
2024-01-03 17:32:33
837
原创 C语言学习记录—进阶作业(额外作业)
小乐乐最近在课上学习了如何求两个正整数的最大公约数与最小公倍数,但是他竟然不会求两个正整数的最大公约数与最小公倍数之和,请你帮助他解决这个问题。输入描述:每组输入包含两个正整数n和m。输出描述:对于每组输入,输出一个正整数,为n和m的最大公约数与最小公倍数之和。:用辗转相除法求最大公约数。两个整数的乘积 = 他们的最大公约数 * 他们的最小公倍数。
2024-01-01 15:54:20
352
原创 C语言学习记录—自定义类型详解:结构体、枚举、联合
结构体变量的定义int x;int y;}p1;//声明类型的同时定义变量p1//定义结构体变量p2//结构体变量的初始化int x;int y;//结构体变量的初始化//结构体创建类似图纸,变量才是盖了房子。创建结构体没有开辟空间,创建变量才开辟了空间int age;int n;char ch;int age;
2023-12-09 17:01:34
906
原创 C语言学习记录—字符函数和字符串函数
源字符串必须以 '\0' 结束。会将源字符串中的 '\0' 拷贝到目标空间。目标空间必须足够大,以确保能存放源字符串。目标空间必须可变。学会模拟实现。int main()//错误写法,这是常量字符串,不能修改//错误写法,arr1是数组名,是地址,地址是一个常量值(不是空间),不能被赋值//必须有\0,否则报错return 0;源字符串必须以'\0'结束。目标空间必须有足够的大,能容纳下源字符串的内容。目标空间必须可修改。字符串自己给自己追加,如何?
2023-12-04 23:51:54
826
原创 C语言学习记录—指针进阶
指针数组 - 是数组,是用来存放指针的数组。int main()//存放整型指针的数组,数组每个元素的类型是int*(即int*类型的值)//存放字符指针的数组//一级字符指针的数组//二级字符指针的数组return 0;数组指针 - 是指针,指向数组的指针int main()//p1先跟[]结合,是个数组,有10个元素,p1是数组名,数组元素类型是int*。p1是指针数组//p2先跟*结合,p2是指针,指向的是数组,数组元素10个,数组元素类型是int。p2是数组指针。
2023-11-01 17:46:17
160
1
原创 C语言学习记录—数据的存储
假设一个整形是0x11223344,左边为低地址,右边为高地址11 22 33 44 - 大端字节序存储44 33 22 11 - 小端字节序存储0x11223344,11是高位,44是低位字节序:以字节为单位讨论顺序大端【字节序】存储:把一个数据的高位字节序的内容放在低地址处,把低位字节序放在高地址处小端【字节序】存储:把一个数据的高位字节序的内容放在高地址处,把低位字节序放在低地址处请简述大端字节序和小端字节序的概念,设计一个小程序来判断当前机器的字节序。
2023-10-15 17:27:39
142
1
原创 C语言学习记录—调试技巧
Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。在环境中选择debug选项,才能使代码正常调试。2. 常用快捷键F5启动调试,经常用来直接跳到下一个断点处。F9创建断点和取消断点断点的重要作用,可以在程序的任意位置设置断点。这样就可以使得程序在想要的位置随意停止执行,继而一步步执行下去。F10。
2023-10-03 14:58:14
101
原创 C语言学习记录—结构体
int x;int y;}p1;//声明类型的同时定义变量p1//定义结构体变量p2//初始化:定义变量的同时赋初值。struct Stu //类型声明//名字int age;//年龄//初始化int data;//结构体类型里包含其他结构体变量//结构体嵌套初始化//结构体嵌套初始化。
2023-09-30 09:29:47
82
原创 C语言学习记录—指针
1.指针是内存中一个最小单元(1字节)的编号,也就是地址2.平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量。
2023-09-28 16:03:29
89
原创 数组的应用实例2—扫雷
1. 程序开始时的思路和三子棋一样,展示菜单,1是开始游戏,0是退出程序,其他选项提示错误输入。使用switch语句实现这个逻辑,判断条件就是玩家的输入。这个程序想让玩家可以重复玩,所以在将这个switch语句放入do while循环中,do while的判断条件也是玩家输入。为此需要菜单函数和游戏功能实现函数。2. 假设棋盘是9*9大小,并且放置10个雷。没有雷的地方用'0',有雷的地方用'1'。
2023-09-13 15:31:09
76
1
原创 数组的应用实例1—三子棋
1. 程序一开始需要展示一个选择界面,根据玩家选择决定后续执行。这里假设1是开始游戏,0是程序,其他选择提示错误选项,即创建一个input变量接收玩家选项。此功能可以使用switch语句来实现。除此之外,这个游戏可以重复玩,一旦结束又回到最开始的选择界面。所以将这个switch语句放到do while循环中。这样不仅可以实现一开始展示界面,还能反复玩。同样这个do while循环也使用玩家输入作为条件。
2023-09-12 16:06:49
133
1
原创 C语言学习记录—函数
声明就告诉编译器有一个什么样的函数(名字、参数、返回类型)。但是否存在声明决定不了。声明要在函数使用之前,先声明后使用。声明一般要放在头文件中函数的定义:就是函数功能的具体实现。
2023-09-10 17:06:59
93
1
原创 C语言学习记录—分支语句和循环语句
本章内容有if语句、switch语句、while循环、for循环、do while循环、goto语句以及本章的练习。接下来一个一个分析。
2023-09-10 14:57:12
150
1
原创 C语言学习记录—初识C语言
通过初识c语言这一章发现,c语言的基本语法和Python有很多相似之处。但是在学习Python的时候并不了解在创建变量意味着什么,当时也并不理解= 不是等于的意思,而是赋值的意思。现在能了解到一些代码背后的事情。最后希望自己坚持下去。
2023-09-09 16:38:41
154
1
原创 学习编程的第一篇博客
后来看到很多人都说如果想要成为程序员,推荐一开始学习c语言,这样可以更好的了解编程,以后学习其他语言会更轻松,因为c语言是底层语言,可以更好的了解计算机。一个月前从网上了解了一些适合新手入门的编程语言,发现python最简单,于是学习了一个月后,语法部分完成了,但是也迷茫了,不知道接下来该学什么。因为是在职自学,上班的时候没有工作都在自学,下班后吃完饭,锻炼差不多晚上8点多了,尽量学到11点。学完鹏哥的c语言后再看这位up主推荐的资料。目前对编程这个行业知之甚少,对自己未来想要从事的工作也不确定。
2023-08-13 21:39:55
61
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人