- 博客(27)
- 收藏
- 关注
原创 【数据库】第二章 关系数据库 各种概念
关系模式是对关系的描述 关系模型是模型 关系是值(1)元组集合的结构(每一行的构成)属性构成、属性来自的域、属性和域之间的映射关系(2)一个关系通常由赋予它的元组语义确定(3)现实的世界中还存在着完整性约束2.关系模式的表示方式(了解)区别和关系的表示:R(D1,D2,...Dn)
2025-12-30 18:56:30
530
原创 【C++】vector的迭代器失效问题,(什么是迭代器失效,为什么会产生迭代器失效,怎么避免迭代器失效问题)
迭代器的作用:就是让算法不用关心底层的数据结构,不管你是数组还是链表,直接通过迭代器来访问,其底层就是指针,或者是对指针进行封装。vector的迭代器:就是原生指针T*// 迭代器某种意义上就是指针迭代器的本质就是指针,迭代器失效就是指针失效。指针失效:指针指向的空间是非法的。指向的空间被释放了,或者是越界访问。
2025-11-10 20:31:06
765
原创 【C++初阶】vector容器的模拟实现,各接口讲解
使用STL的三个境界:能用,明理,能扩展 ,那么下面学习vector,我们也是按照这个方法去学习,以下是vector的官方文档我们先来讲讲vector的成员变量有哪些vector容器其实就是我们数据结构中学过的顺序表结构,实现这一结构的成员变量如下图_start指向第一个元素,_finish指向结束的下一个位置,_end_of_storage指向整个容器的结尾。
2025-11-10 15:36:46
888
原创 【C++初阶】string类的模拟实现
本文详细介绍了C++中string类的模拟实现过程,主要包括以下内容: 默认成员函数的实现 构造函数、拷贝构造(传统写法和现代写法) 赋值运算符重载(传统写法和现代写法) 析构函数 容量操作接口 size()/capacity()等基础接口 reserve()/resize()等扩容函数 clear()/empty()等辅助函数 访问元素和遍历操作 operator[]和at()访问方式 迭代器实现(begin/end等) front()/back()接口 字符串修改操作 push_back()/appen
2025-11-08 12:27:59
1065
原创 【C++初阶】string类操作、查找与非成员函数
接上一篇博文string的成员函数,substr严格意义不属于modify范畴,而是属于string operations字符串操作范畴,没有对string对象进行修改,(查找,复制,比较等)这一篇博文调里面重要的内容来讲:子串和查找就是将string返回成C风格的字符串在str中从pos位置开始,截取n个字符,然后将其返回使用 时需判断 的合法性,避免越界异常用于查找某个字符或者子串在字符串中的位置。从左向右查找 第 1 种():用于在字符串中查找另一个 类型的子串。示例中从 的
2025-10-28 01:18:39
706
原创 【C++初阶】string类成员函数:构造函数,容量操作,遍历,与增删改操作
前面我们简要介绍了STL(标准模板库),有六大组件,其中一大组件叫做容器,这一节我们将从其中的string开始介绍。
2025-10-27 23:21:19
731
1
原创 【C++初阶】范围for:高效遍历新方法 (超级语法糖)
要让自定义类型支持基于范围的for循环,需要提供begin()和end()成员函数或自由函数少一个都不行,后面string类的模拟实现的时候会说到public:// 也可以提供const版本。
2025-10-25 18:00:53
990
原创 【C++初阶】C++11 auto关键字
在同一行声明多个auto变量时,这些变量必须是相同类型,否则编译器将会报错,因为编译器只对第一个类型进行推导,然后推导出的类型再来定义其他变量。int main()//正确都是int类型auto c=3,d=1.1//错误一个是int类型一个是doublereturn 0;
2025-10-25 16:55:57
887
原创 【C++杂记】auto和范围for关键字
引用可以修改返回值,返回值是临时变量的拷贝,具有常性,不能修改,但是使用引用返回就可以,不会产生拷贝,并且不像形参修改不会影响实参那样。shrink缩容,异地缩容(重新开空间,释放原空间),减少capacity到他的size代价很大,不建议经常使用。reserve(小于size或者capacity)的时候,不会动capacity。=呢,链表不连续,不能确定后面就比前面的小。replace:从第几个位置开始的n个字符替换成新的(少使用,效率极低)reserve(5):不一定缩容,一定不会size改成5。
2025-10-22 19:40:05
230
原创 【C++初阶】模板初阶:初识泛型编程
class 类模板名// 类内成员定义// 类模版public:_size = 0;// 模版不建议声明和定义分离到两个文件.h 和.cpp会出现链接错误,具体原因后面会讲// 扩容++_size;
2025-10-16 00:30:00
736
1
原创 【C++初阶】C++的内存管理
int main()// new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间还会调用构造函数和析构函数free(p1);delete p2;// 内置类型是几乎是一样的// Cfree(p3);delete p4;free(p5);return 0;注意:在申请自定义类型的空间时,new会调用构造函数,delete。
2025-10-16 00:00:00
1035
1
原创 【C++初阶】类和对象(下)static成员 友元 内部类和匿名对象
/ 全局变量作为计数器class A {public:问题封装性破坏:全局变量可以被程序中任何代码修改(比如其他函数误操作g_count--),导致计数混乱。命名冲突:全局变量可能与其他代码中的变量重名,引发意想不到的错误。语义不清晰:全局变量不属于类,从代码结构上无法直观看出 “g_count是用于统计 A 类对象的”。
2025-10-14 22:09:55
543
原创 【C++初阶】类和对象(下):(隐式)类型转换和对象拷贝编译器优化
explicit关键字的作用就是禁止使用单参数构造函数的隐式转换,用这个关键字修饰构造函数。内置类型发生类型转换时,先将a强转为double类型,再将a的值赋给b。
2025-10-14 20:53:58
867
原创 【C++初阶】类和对象(下):初始化列表的构造方式
初始化列表是C++中真正的成员初始化机制、是对象构造的核心机制引用、const成员和无默认构造函数的类成员必须使用初始化列表对于所有成员变量,优先使用初始化列表以提高效率,并保持声明与初始化顺序一致初始化顺序由成员声明顺序决定,与初始化列表书写顺序无关,容易成为陷阱构造函数体内的"初始化"实际上是赋值操作,效率较低C++11缺省值提供了额外的初始化灵活性掌握初始化列表的正确使用是编写高效C++代码的重要基础,特别是在涉及复杂类和资源管理时,正确的初始化方式可以避免许多潜在问题。
2025-10-14 18:21:06
844
原创 【C++】内置类型和自定义类型初始化
自定义类型(类或结构体)的成员变量会如果自定义类型有默认构造函数,编译器会调用它。若未显式定义构造函数,编译器会生成一个默认构造函数,并对所有成员调用其默认构造函数(递归处理)。内置类型成员仍需显式初始化,否则值未定义。Custom() : y(42) {} // 显式初始化 yint y;Custom c;// 自动调用 Custom::Custom()int z;// 未初始化// obj.c.y = 42,obj.z 值未定义默认初始化内置类型:不自动初始化(值未定义)。
2025-10-14 16:19:32
252
原创 【C++初阶】日期类的实现:进一步学习类的默认成员函数和运算符重载
缺省值只能声明给,定义不能给定义时指明类域int getday加一个static比较好,免得每一次都重新创建数组加const的作用是为了防止权限放大的情况产生class Datepublic://构造函数给默认值,因为随机给的日期不合适//打印函数static int GetMonthDay(int year, int month)//类里面定义默认为内联函数,频繁调用会更快,为了整洁一点也可以拿出去定义加个inline即可,这里加的static只是方便外面用。
2025-10-06 00:53:01
830
原创 【C++初阶】类和对象(中)(类的成员函数)
析构函数与构造函数功能相反,析构函数不是完成对对象本生的销毁,比如局部对象是存在栈帧的, 函数结束栈帧销毁,他就释放了,不需要我们管,C++规定对象在销毁时会⾃动调⽤析构函数,完成对 象中资源的清理释放工作。多数情况下还是自己写构造函数好一些,有一种特殊情况,当一个类里面的变量类型全是自定义类型时,可以用默认生成,因为自定义类型自带它的构造函数了,这时候不用再自己定义,比如下面的例子。我们不写,编译器默认生成的构造,对内置类型成员变量的初始化没有要求,也就是说是否初始化是不确定的,看编译器。
2025-10-04 00:24:44
734
2
原创 【C++初阶】类和对象(上)
class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类的定义结束后面的分号不能省略。类体中的的内容称为类的成员:类中的变量称为类的属性或成员变量;类中函数称为类的方法或者类的成员函数。为了区分成员变量,一般习惯成员变量回家一个特殊标识,如成员变量前或者后面加_或者m开头,注意C++中这个并不是强制的,只是一些惯例,具体看公司要求。
2025-09-29 19:30:03
1025
1
原创 【C++入门】函数重载 引用 内联函数 nullptr
引用不是新定义⼀个变量,而是给已存在变量取了⼀个别名,编译器不会为引用变量开辟内存空间, 它和它引用的变量共⽤同⼀块内存空间。(不会像指针变量一样有另外的空间存储)引用的初始化类型& 引用别名=引用对象;即int &b=a;是对a起别名叫b,b是a的别名;C++中为了避免引入太多的运算符,会复用C语言的⼀些符号,比如前面的>>,<<,这里引用也和取地址使用了同⼀个符号&,大家注意使用方法角度区分就可以。(吐槽⼀下,这个问题其实挺坑的,个人觉得用更多符号反而更好,不容易混淆。
2025-09-23 21:44:55
856
原创 【C++入门】命名空间,输入输出,缺省参数,函数重载
最近开始学c++,之前学C语言的一大痛点被解决,感谢C++之父——本贾尼博士,可能他当时在贝尔实验室里工作时遇到了这样的情形:他们几个人分开工作,之后各自完成后把代码块放一块,结果报错了,检查过后发现有时是是因为的变量名字一样了,有时又因为变量名和函数名相同了;于是他们思考怎么解决这个问题,于是在C++中提出了新的概念:命名空间
2025-09-16 23:00:00
1508
原创 【C++入门】C++的第一个程序
C++兼容C语⾔绝⼤多数的语法,所以C语⾔实现的hello world依旧可以运⾏,C++中需要把定义⽂件 代码后缀改为.cpp,vs编译器看到是.cpp就会调⽤C++编译器编译,linux下要⽤g++编译,不再是gcc。现在我们看不懂,后面会讲解,不过可以看出C语言和C++还是有很多相似之处的,都有头文件和main函数,\n转义符在C++中同样适用。当然C++有⼀套自己的输⼊输出,严格说C++版本的hello world应该是这样写的。,OK,本篇文章就到这儿,希望对您有帮助。跟上面比较,我们发现。
2025-02-19 04:00:00
167
原创 编程梦的起点
好吧,时隔四个月,我又重新审视了自己最初的想法,为什么要开始学编程,一开始就是为了应付学校的C语言课程,后面越来越多的课程,随着学习的深入,从一窍不通到可以读懂大部分代码,能够理解到它是怎样运行的,从电脑白痴到现在熟练盲打,编程不再只是学校的一门必修课,更成为了我生活的一部分,让我领略到了代码的神奇,学好编程,不只是让我找到一份体面工作的工具包,我还要把它当成我的一项事业来做,在19岁来临之前,我从今天开始要认真学习,更加深入地学习编程的知识,高一要励志成为大佬,敲出牛逼的代码!
2024-03-22 16:48:27
275
5
原创 分支与循环
C语言入门:1.if语句2.关系操作符3.条件操作符4逻辑操作符:&&,II,!5.switch语句6.while循环7.for循环8.do while循环9.break和continues语句
2023-12-01 21:18:48
1048
2
原创 字符串结束标志,字符数组sizeof和strlen的使用
注意到,同样的字符串为何打印出不一样的结果,(补充一点字符串结束标志是‘\0’)由于\0占了一个字符大小,sizeof测得4,而strlen测的是字符串长度,故为3。在测字符串长度和字符数组长度时,常用strlen和sizeof,以前不太懂这两个区别,经过今天的学习,理解了。sizeof是操作符,而strlen是函数,需要从头文件中导出如下图。sizeof测字符大小,strlen测字符长度。strlen和size of区别。
2023-11-19 02:02:35
258
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅