
C++
文章平均质量分 84
C++
咖喱年糕
欢迎大家,和我一起探讨学术上的知识,一起学习一起进步!
展开
-
【C++20】关键字全解析(96)
关键字配合使用,用于更精细地控制原子操作的行为,不过使用场景相对较专业和特定,例如在一些复杂的并发控制逻辑中,当涉及到对原子操作的事务性处理(类似数据库中的事务概念,需要保证一组操作要么全部成功要么全部失败)时可能会用到这些关键字,具体的使用方式和语义依赖于具体的标准库实现以及应用场景,目前应用相对不是那么广泛。类一起使用,可以用来判断对象的实际类型,在运行时进行类型识别等操作,不过要注意它是基于对象的动态类型(即实际的对象类型,在多态情况下可能和指针或引用的声明类型不同)来获取信息的。原创 2025-03-03 09:56:11 · 1146 阅读 · 0 评论 -
学生信息管理系统代码优化(C++)
Grade.hGrade.hStudent类和Class类,它们分别用于描述学生个体信息以及班级内学生信息的集合管理,为后续功能实现搭建了数据结构框架。// 班级类public:// 班级唯一标识符,用于区分不同班级// 指向班级内学生链表的头指针,通过链表结构存储班级中的学生信息// 指向下一个班级的指针,可用于构建班级链表,便于多个班级信息的串联管理// 构造函数// 添加学生// 打印所有学生// 统计班级学生平均分该类主要用于管理班级层面的学生信息相关操作,通过。原创 2025-03-03 09:53:20 · 769 阅读 · 0 评论 -
【C++STL标准模板库】四、算法
算法主要是由头文件组成。是所有STL头文件中最大的一个,其中常用的功能涉及到比较,交换,查找,遍历,复制,修改,反转,排序,合并等…体积很小,只包括在几个序列容器上进行的简单运算的模板函数。定义了一些模板类,用以声明函数对象。原创 2025-02-13 09:23:33 · 685 阅读 · 0 评论 -
【C++STL标准模板库】三、常用容器
二在于deque没有容量的概念,因为它是动态的以分段连续空间组合而成,随时可以增加一段新的空间并链接起来,换句话说,像vector那样,“旧空间不足而重新配置一块更大空间,然后复制元素,再释放旧空间”这样的事情在deque身上是不会发生的。这在vector是不成立的,因为vector的插入操作可能造成记忆体重新配置,导致原有的迭代器全部失效,甚至List元素的删除,也只有被删除的那个元素的迭代器失效,其他迭代器不受任何影响。而且,对于任何位置的元素插入或元素的移除,list永远是常数时间。原创 2025-02-13 09:21:29 · 827 阅读 · 0 评论 -
【C++STL标准模板库】二、STL三大组件
从技术角度来看,容器和算法的泛型化并不困难,C++的class template和function template可分别达到目标,如何设计出两这个之间的良好的胶着剂,才是大难题。STL收录的算法经过了数学上的效能分析与证明,是极具复用价值的,包括常用的排序,查找等等。常用的数据结构:数组(array),链表(list),tree(树),栈(stack),队列(queue),集合(set),映射表(map),根据数据在容器中的排列特性,这些数据分为序列式容器和关联式容器两种。算法,问题之解法也。原创 2025-02-04 20:33:22 · 603 阅读 · 0 评论 -
【C++STL标准模板库】一、STL概述
长久以来,软件界一直希望建立一种可重复利用的东西,以及一种得以制造出“可重复运用的东西”的方法,让程序员的心血不至于随时间的迁移、人事异动而烟消云散,从函数(functions),类别(classes), 函数库(function libraries), 类别库(class libraries)、各种组件,从模块化设计,到面向对象(object oriented ),为的就是复用性的提升。复用性必须建立在某种标准之上。原创 2025-02-04 20:33:05 · 493 阅读 · 0 评论 -
【C++面向对象】七、结构体、模板
在C++中,还有一种用户自定义的数据类型,结构体。结构体的定义与使用基本与类相同。// 定义结构体// 结构体中定义的属性int age;// 结构体中的构造函数name = "";age = 0;// 结构体中的函数cout原创 2025-01-06 09:35:58 · 1234 阅读 · 0 评论 -
【C++面向对象】六、封装、继承和多态
生活中的多态,是指的客观的事物在人脑中的主观体现。例如,在路上看到一只哈士奇,你可以看做是哈士奇,可以看做是狗,也可以看做是动物。主观意识上的类别,与客观存在的事物,存在is a的关系的时候,即形成了多态。在程序中,一个类的引用指向另外一个类的对象,从而产生多种形态。当二者存在直接或者间接的继承关系时,父类引用指向子类的对象,即形成多态。多态是面向对象三大特性之一,记住继承是多态的前提,如果类与类之间没有继承关系,也不会存在多态。原创 2025-01-06 09:35:40 · 1202 阅读 · 1 评论 -
【C++面向对象】五、运算符重载
运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。运算符重载(operator overloading)只是一种“语法上的方便”,也就是它只是另一种函数调用的方式。在c++中,可以定义一个新的运算符来处理类的数据。这种定义很像一个普通的函数定义,只是函数的名字由关键字operator及其紧随的运算符组成。差别仅此而已。它像其他函数一样也是一个函数,当编译器遇到适当的模式时,就会调用这个函数。原创 2025-01-01 17:10:04 · 568 阅读 · 0 评论 -
【C++面向对象】四、友元
比如你的家,有客厅,有你的卧室,那么你的客厅是Public的,所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去,但是呢,你也可以允许你的闺蜜好基友进去。类的主要特点之一是数据隐藏,即类的私有成员无法在类的外部(作用域之外)访问。但是,有时候需要在类的外部访问类的私有成员,怎么办?解决方法是使用友元函数,友元函数是一种特权函数,C++允许这个特权函数访问私有成员。程序员可以把一个全局函数、某个类中的成员函数、甚至整个类声明为。原创 2025-01-01 17:08:35 · 358 阅读 · 0 评论 -
【C++面向对象】三、this指针
使用关键字const修饰的函数,叫做常函数。常函数中,不允许修改属性的值。常函数中,不允许调用其他的普通函数。如果想要在常函数中修改某个属性的值,需要将这个属性设置为mutable。// 修饰为可变的,这个属性可以在常函数中进行修改// 定义常函数// 这里会出错,不允许在常函数中修改普通属性的值// 这里会出错,不允许在常函数中修改普通属性的值// 这里可以正常修改,因此此时的score已经被修饰为mutabletest();原创 2024-12-04 10:17:37 · 470 阅读 · 0 评论 -
【C++面向对象】二、构造与析构
构造函数,是一个比较特殊的函数。我们在使用一个类的对象的时候,需要为其分配空间。空间分配完成之后,我们一般都会对创建的对象的属性进行初始化的操作。而这个过程就可以在构造函数中来完成了。因此:构造函数是一个函数,是在对象创建的时候触发,用来对对象的属性进行初始化的赋值操作。构造函数的名字,必须和类的名字相同!构造函数不能写返回值类型!构造函数可以有不同的重载!public:// 这就是一个无参的构造函数Person() {cout原创 2024-12-04 10:17:12 · 1056 阅读 · 0 评论 -
【C++面向对象】一、面向对象介绍 和 类的设计与对象的创建
面向过程是一种看待问题、解决问题的思维方式,着眼点在于问题是如何一步步解决的,然后亲力亲为地解决问题。面向对象是一种看待问题、解决问题的思维方式,着眼点在于找到一个能够帮助解决问题的实体,然后委托这个实体来解决问题。我们在定义类中的属性的时候,可以定义int类型、float类型、字符串类型等等,那么能不能定义为另外的一个类的类型呢?可以的!类其实也是一种自定义的复杂的数据类型。public:cout原创 2024-12-03 14:45:44 · 1090 阅读 · 0 评论 -
【C++基础编程】七、数组
数组其实就是一个数据容器,里面可以存储若干个相同的数据类型的数据。小案例:现在有100个学生的成绩需要存储,那么怎么存储呢?以我们现有的知识储备来说,可以定义100个变量来存储这些数据,但是这样是非常麻烦的,重复的操作特别多。而且,如果我需要对这些成绩进行批量的操作呢?例如,我需要将这些成绩都加1分?如果我们使用100个变量来存储的话,那么需要依次修改每一个变量的值,这是一个很大的工作量。。。那么有没有一个比较简单的方式呢?数组!我们可以把这100个成绩存入一个数组中存储起来!原创 2024-12-03 14:45:23 · 1098 阅读 · 0 评论 -
【C++基础编程】六、指针与引用
我们在前面的代码中定义了一些变量,其实定义变量就是在内存中开辟了一块指定大小的空间,空间开辟的大小取决于不同的数据类型所占用的空间大小。并且可以在这样的空间中进行值的填充。那么指针是什么呢?每一个开辟中的内存空间,都是有一个唯一的地址的,而这样的地址我们就称为是“指针”。原创 2024-11-09 11:22:47 · 1195 阅读 · 0 评论 -
【C++基础编程】五、函数
函数,指一段可以直接被另一段程序或代码引用的程序或代码。一个较大的程序一般应分为若干个程序块,每一个模块用来实现一个特定的功能。所有的高级语言中都有子程序这个概念,用子程序实现模块的功能。面向过程语言中,整个程序就是由函数(相互调用)组成的面向对象语言中,函数是类的组成部分,整个程序是由很多类组成的通俗讲,函数就是解决某件事情的办法,比如 我要上班,可以选择 步行,骑车,开车,公共交通,而每一个方式,在程序中就可能是一个函数。函数在定义完成之后,其中的代码并不会自动的执行。原创 2024-11-09 11:21:25 · 860 阅读 · 0 评论 -
【C++基础编程】四、流程控制
我们之前在写代码,执行代码的时候,发现写的代码都是一行一行的执行的。这种执行的结构称为“顺序结构”,除了这种结构之外,还有其他的执行结构。程序执行结构结构的描述描述图顺序结构代码从上往下,依次执行。分支结构程序在某一个节点遇到了多种向下执行的可能性,根据条件,选择一个分支继续执行。循环结构某一段代码需要被重复执行多次。原创 2024-11-08 17:46:00 · 974 阅读 · 0 评论 -
【C++基础编程】三、运算符
但与此同时,赋值运算符与上述的算术运算符类似,也是有运算的结果的。将参与运算的每一个数字计算出补码,对补码中的每一位进行类似于逻辑运算的操作,1相当于True,0相当于False。此外,程序员都可会偷懒了,在赋值运算符的基础上,又结合了常用的计算,衍生出来了其他的组合的运算符。++、–是自增自减运算符,表示在现有的值的基础上,对数据进行+1和-1的操作。在C++中的赋值运算符是=,可以将等号右边的值,给等号左边的变量进行赋值。以 += 为例,表示将一个变量,在现有的值的基础上进行加法的计算。原创 2024-11-08 17:45:42 · 923 阅读 · 0 评论 -
【C++基础编程】二、C++数据类型
/ 整型// 浮点型// float类型最好在字面量的后面添加f// 布尔型// 字符型// 字符需要包含在一对单引号里面// 字符串类型// 字符串需要包含在一对双引号里面return 0;宏定义在C++中是一个比较特殊的命令,它可以在一定程度上方便开发人员的程序设计过程。但是很多的初学者因为不能很好的去理解宏定义,不明白本质是什么,因此在使用宏定义的时候经常会出现问题。宏定义,就是在文件的头部,使用#define来定义一个标识符,用来描述一个字符串。原创 2024-10-25 09:32:22 · 1218 阅读 · 0 评论 -
【C++基础编程】一、初识C++
在我们正式开始学习 C++之前,需要对计算机的一些理论基础有一定的认知。而进制就是这样的基础,因此我们需要先学习进制。我们知道在计算机的世界中,只有 0和1 两个数字,那么其他的数据该如何去表示呢?进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正”字计数法,以及类似的 tally mark 计数)。对于任何一种进制——X 进制,就表示每一位置上的数运算时都是逢 X 进一位。原创 2024-10-25 09:31:59 · 1170 阅读 · 0 评论 -
【C++基础入门】八、结构体(结构体基本概念、结构体定义和使用、结构体数组、结构体指针、结构体嵌套结构体、结构体做函数参数、结构体中 const使用场景)
struct 结构体名 { 结构体成员列表 };struct 结构体名 变量名struct 结构体名 变量名 = { 成员1值 , 成员2值…}定义结构体时顺便创建变量//结构体定义//成员列表//姓名int age;//年龄int score;//分数}stu3;//结构体变量创建方式3//结构体变量创建方式1//struct 关键字可以省略stu1.name = "张三";原创 2024-02-07 20:27:40 · 432 阅读 · 0 评论 -
【C++基础入门】七、指针(定义和使用、所占内存空间、空指针和野指针、const关键字修饰指针、指针和数组、指针和函数)
指针变量定义语法:数据类型 * 变量名;//1、指针的定义int a = 10;//定义整型变量a//指针定义语法: 数据类型 * 变量名;int * p;//指针变量赋值p = &a;//指针指向变量a的地址//打印数据a的地址//打印指针变量p//2、指针的使用//通过*操作指针变量指向的内存return 0;指针变量和普通变量的区别普通变量存放的是数据,指针变量存放的是地址指针变量可以通过" * "操作符,操作指针变量指向的内存空间,这个过程称为解引用。原创 2024-02-05 12:18:30 · 1011 阅读 · 2 评论 -
【C++基础入门】六、函数(定义、调用、声明、值传递、有参无参有反无反、分文件编写)
函数的定义一般主要有5个步骤:1、返回值类型2、函数名3、参数表列4、函数体语句5、return 表达式返回值类型 函数名 (参数列表) {函数体语句 return 表达式 }返回值类型 :一个函数可以返回一个值。在函数定义中函数名:给函数起个名称参数列表:使用该函数时,传入的数据函数体语句:花括号内的代码,函数内需要执行的语句return表达式: 和返回值类型挂钩,函数执行完后,返回相应的数据定义一个加法函数,实现两个数相加//函数定义return sum;原创 2024-02-05 11:44:12 · 550 阅读 · 0 评论 -
【C++基础入门】五、数组(元素逆序、两数交换、冒泡排序、二维数组遍历)
数据类型 数组名[ 数组长度 ];数据类型 数组名[ 数组长度 ] = { 值1,值2 ...};数据类型 数组名[ ] = { 值1,值2 ...};示例//定义方式1//数据类型 数组名[元素个数];//利用下标赋值//利用下标输出//第二种定义方式//数据类型 数组名[元素个数] = {值1,值2 ,值3 ...};//如果{}内不足10个数据,剩余数据用0补全//逐个输出//一个一个输出太麻烦,因此可以利用循环进行输出i < 10;i++)原创 2024-02-02 11:05:52 · 662 阅读 · 0 评论 -
【C++基础入门】四、程序流程结构(水仙花数、乘法口诀、七和七的倍数、随机数猜数字)
案例描述:从1开始数到数字100, 如果数字个位含有7,或者数字十位含有7,或者该数字是7的倍数,我们打印敲桌子,其余数字直接打印输出。:系统随机生成一个1到100之间的数字,玩家进行猜测,如果猜错,提示玩家数字过大或过小,如果猜对恭喜玩家胜利,并且退出游戏。总结:与if语句比,对于多条件判断时,switch的结构清晰,执行效率高,缺点是switch不可以判断区间。总结:和if语句比较,三目运算符优点是短小整洁,缺点是如果用嵌套,结构不清晰。如果表达式1的值为假,执行表达式3,并返回表达式3的结果。原创 2024-02-02 11:05:07 · 900 阅读 · 0 评论 -
【C++基础入门】三、运算符(算术运算符、赋值运算符、比较运算符、逻辑运算符)
用于执行代码的运算。原创 2024-02-01 01:08:01 · 489 阅读 · 0 评论 -
【C++基础入门】二、数据类型(sizeof关键字、ASCII码表格、转义字符)
C++规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存。原创 2024-02-01 00:51:06 · 902 阅读 · 0 评论 -
【C++基础入门】一、C++初识
编写一个C++程序总共分为4个步骤 Visual Studio是我们用来编写C++程序的主要工具,我们先将它打开右键源文件,选择添加->新建项给C++文件起个名称,然后点击添加即可。1.1.4 运行程序作用:在代码中加一些说明和解释,方便自己或其他程序员程序员阅读代码两种格式作用:给一段指定的内存空间起名,方便操作这段内存语法:示例:1.4 常量作用:用于记录程序中不可更改的数据C++定义常量两种方式#define 宏常量: const修饰的变量 示例:1.5 关键字作用:关键字是C++原创 2024-01-31 03:29:19 · 454 阅读 · 0 评论 -
【Visual Studio】C++开发环境搭建
进入Visual Studio 官网后,选择 下载Windows版,并选择Community 2017 社区版本进行下载。按钮 ,如果出现以下模板选项,证明安装成功,并可以创建C++项目!在开始菜单找到Visual Studio 2017 并且点击运行。在百度搜索 visual studio,选择 如下图中的选项。安装成功后提示重启,点击重启完成剩余配置。双击运行下载的安装文件,弹出安装界面。这一选项,如需其他,自行勾选。至此,C++的开发环境搭建完毕!原创 2024-01-31 02:51:13 · 1933 阅读 · 0 评论