- 博客(48)
- 收藏
- 关注
原创 C++——继承
面向对象程序设计有三大特性:封装、继承、多态,之前我们在类和对象、和迭代器的模拟中了解到了封装,今天我们来了解继承一、继承的概念及定义1.1继承的概念继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用public:protected:// 姓名。
2024-06-14 15:57:37
926
原创 C++——stack和queue
上述文章讲了STL中的stack和queue容器的使用,同时讲了优先级队列priority_queue,希望对你有所帮助。
2024-06-04 17:29:09
945
原创 C++——list
今天我们来了解C++中STL库中的list,相当于我们之前讲过C语言数据结构中的带头双向循环链表。了解list的使用和模拟实现。一、list1.1 list的介绍1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。
2024-06-01 13:33:01
2042
原创 C++——vector
之前我们在数据结构中了解到了C语言的顺序表,今天我们来学习C++中的顺序表vector。一、vector1. vector是表示可变大小数组的序列容器。2. 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。3. 本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。
2024-05-31 15:30:35
848
原创 C++——STL和string类
今天我们来学习一下C++中十分重要的组件库,同时学习一下string类,注意string不属于STL库中。一、STL标准模板库是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。以上就是标准库中的string类的主要功能,和我们具体实现的string类,希望对你有所帮助。
2024-05-28 10:40:51
795
原创 C++——初阶模板
我们今天来了解一下,C++中模板的一些基础知识。一、泛型编程如何实现一个通用的交换函数呢?使用函数重载虽然可以实现,但是有一下几个不好的地方:1. 重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增加对应的函数2. 代码的可维护性比较低,一个出错可能所有的重载均出错那能否告诉编译器一个模子,让编译器根据不同的类型利用该模子来生成代码呢?如果在C++中,也能够存在这样一个模具,通过给这个模具中填充不同材料(类型),来。
2024-05-21 10:35:36
1004
原创 C++——内存管理
之前我们讲了C语言中的内存管理,今天我们来了解一下C++中的内存管理。一、C/C++中内存分布【说明】1.栈又叫堆栈--非静态局部变量/函数参数/返回值等等,栈是向下增长的。2.内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存,做进程间通信。(Linux课程如果没学到这块,现在只需要了解一下)3.堆用于程序运行时动态内存分配,堆是可以上增长的。4.数据段--存储全局数据和静态数据。5.代码段--可执行的代码/只读常量。
2024-05-21 09:31:26
1022
原创 C++——类和对象(下)
我们今天继续来了解C++中类和对象,了解什么是初始化列表,友元等知识。一、再谈构造函数通过前面学习我们知道在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值class Datepublic:_day = day;int _month;int _day;虽然上述构造函数调用之后,对象中已经有了一个初始值,但是不能将其称为对对象中成员变量的初始化,构造函数体中的语句只能将其称为赋初值,而不能称作初始化。因为。
2024-05-19 22:21:47
1119
原创 C++——类和对象(中)
前面我们了解到了类和对象的基本知识,今天我们来讲类中的默认成员函数和运算符重载的知识。一、类的6个默认成员函数如果一个类中什么成员都没有,简称为空类。空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。
2024-05-17 20:58:38
882
原创 C++入门——命名空间、缺省参数、函数重载、引用、内敛函数、auto关键字
今天我们就要来学习C++的知识了,通过C语言来过度到C++,首先我们先来了解一下C++中的入门语法,比如命名空间,缺省参数,函数的重载等知识。一、什么是C++C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(objectoriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。
2024-05-11 23:16:17
1738
原创 数据结构——二叉树
我们之前讲了二叉树的顺序存储的一种——堆,今天我们来了解二叉树的链式存储。了解二叉树的遍历,和二叉树的节点。通过递归分治的思想来实现二叉树的功能。一、二叉树链式结构为了先了解到二叉树的基本操作,我们先手动创造一个二叉树(与后面的二叉树的创建无关)。等二叉树结构了解的差不多时,我们反过头再来研究二叉树真正的创建方式。//左子树//右子树}BTNode;// 创建节点n->val = x;return n;现在我们可以手动创建一个二叉树了//手动创建树。
2024-04-24 09:22:12
1109
原创 数据结构——堆
之前我们了解到了一种非线性的数据结构——树,今天我们来学习二叉树的顺序结构——堆的实现,来了解堆这种数据结构。一、堆的概念及结构如果有一个关键码的集合K = { , , ,…, },把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足: <=且 <=( >=且 >= ) i = 0,1,2…,则称为小堆(或大堆)。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。堆的性质:堆中某个节点的值总是不大于或不小于其父节点的值;堆总是一棵完全二叉树。
2024-04-20 22:37:40
2668
1
原创 数据结构——树和二叉树
之前我们学习到的数据结构都是线性的,今天我们来了解一个非线性的数据结构——树,树是由根节点和若干颗子树构成的。树是由一个集合以及在该集合上定义的一种关系构成的。一、树概念及结构1.1树的概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。有一个特殊的结点,称为根结点,根节点没有前驱结点除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm。
2024-04-19 16:32:13
1192
原创 数据结构——队列
之前我们了解到栈是一种特殊的线性表,现在我们来介绍另外一种特殊的线性表队列,队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。一、队列队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为队头实际中我们有时还会使用一种队列叫循环队列。
2024-04-17 21:44:26
1354
原创 数据结构——栈
前面,我们学习过了线性表中的顺序表和链表,今天我们来了解一下线性表的另外一种栈。栈是后进先出(LIFO)的数据结构。这意味着最后一个进入栈的元素总是第一个出来的。栈的操作限制在栈顶进行,即只能从栈顶插入(入栈)和删除(出栈),这种特性使得栈符合后进先出的原则。一、栈栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。
2024-04-16 16:50:16
1018
1
原创 数据结构——算法的时间复杂度和空间复杂度
今天我们来学习一下数据结构和算法的时间和空间复杂度,了解如何来评价一个算法的好坏。一、数据结构和算法数据结构是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合,是在内存中用来管理数据的结构。算法就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。算法定义了如何在数据结构上执行操作。
2024-04-14 16:58:11
1356
原创 C语言——贪吃蛇小游戏
扫雷游戏,今天我们通过C语⾔函数、枚举、结构体、动态内存管理、预处理指令、链表、Win32 API等知识,来实现一个贪吃蛇小游戏。一、贪吃蛇游戏。
2024-04-11 13:00:28
2773
2
原创 数据结构——顺序表
今天我们来讲数据结构方面的知识,数据结构是由“数据”和“结构”两词组合而来。数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在⼀种或多种特定关系的数据元素的集合。数据结构反映数据的内部构成,即数据由那部分构成,以什么方式构成,以及数据元素之间呈现的结构。通过数据结构,能够有效将数据组织和管理在⼀起。按照我们的方式任意对数据进行增删改查等操作。最基础的数据结构:数组但是最基础的数据结构能够提供的操作已经不能完全满足复杂算法实现。所以我们今天来讲数据结构中的线性表。一、线性表。
2024-04-02 23:06:29
1347
2
原创 C语言 预处理详解
C语言中程序需要实现依赖翻译环境和运行环境,而翻译环境可以分为编译和链接两个步骤,其中编译又可以细分为预处理,编译,汇编三个阶段,今天我们就来讲一下预处理阶段。一、预定义符号C语⾔设置了⼀些预定义符号,可以直接使⽤,预定义符号也是在预处理期间处理的。__FILE__ //进⾏编译的源⽂件__LINE__ //⽂件当前的⾏号__DATE__ //⽂件被编译的⽇期__TIME__ //⽂件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义//进⾏编译的源⽂件。
2024-03-27 16:28:49
1188
1
原创 C语言 编译和链接
在C语言中,程序通过编译和链接操作生成可执行文件,在运行环境中输出结果。我们来了解编译和链接操作。一、翻译环境和运⾏环境在ANSI C的任何⼀种实现中,存在两个不同的环境。第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令(⼆进制指令)。第2种是执行环境,它⽤于实际执行代码。上述文章讲了C语言中的编译和链接,和运行环境的知识,希望对你有所帮助。
2024-03-26 20:55:12
863
原创 C语言 文件操作
在C语言中,写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运行程序,是看不到上次程序的数据的,如果要将数据进行持久化的保存,我们可以使用文件。今天我们就来讲一讲文件操作。一、文件磁盘(硬盘)上的文件是文件。但是在程序设计中,我们⼀般谈的文件有两种:程序文件数据文件(从文件功能的⻆度来分类的)。程序文件:程序文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。数据文件:文件。
2024-03-26 16:47:40
983
原创 C语言 动态内存管理
当一个内存空间是程序运行前我们无法确定的,且大小无法估计,这就是动态内存。今天我们来讲一下C语言中动态内存管理,一、动态内存分配为什么要动态内存分配呢?//在栈空间上开辟四个字节//在栈空间上开辟10个字节的连续空间但是上述的开辟空间的方式有两个特点:•空间开辟大小是固定的。•数组在申明的时候,必须指定数组的⻓度,数组空间⼀旦确定了大小不能调整但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间大小在程序运行的时候才能知道,那数组的编译时开辟空间的方式就不能满⾜了。
2024-03-22 13:12:27
1177
1
原创 C语言 自定义类型:联合和枚举
之前我们讲了C语言其中一个自定义类型结构体,今天我们来讲剩下两种联合体和枚举。一、联合体像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。但是编译器只为最⼤的成员分配足够的内存空间。联合体的特点是所有成员共用同⼀块内存空间。所以联合体也叫:共用体。//联合类型的声明union Unchar c;int i;int main()//联合变量的定义//计算连个变量的⼤⼩return 0;为什么大小是4呢?这就和联合体的特点有关了。
2024-03-21 16:24:02
1247
1
原创 C语言 自定义类型:结构体
C语言中通常分为内置类型,和自定义类型,今天我们来了解一下自定义类型中结构体的内容。一、结构体类型上述文章讲了C语言中结构体类型,讲了结构体的对齐,结构体实现位段。希望对你有所帮助。
2024-03-19 19:26:34
1682
1
原创 C语言 数据在内存中的存储
数据在内存中根据数据类型有不同的存储方式,今天我们就来了解一下,我们常见的数据类型在内存中的存储方式。一、整数在内存中的存储C语言操作符详解整数的2进制表⽰方法有三种,即原码反码和补码三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位最高位的⼀位是被当做符号位,剩余的都是数值位。正整数的原、反、补码都相同。负整数的三种表示方法各不相同。原码:直接将数值按照正负数的形式翻译成⼆进制得到的就是原码。反码。
2024-03-17 23:03:32
1358
1
原创 C语言 内存函数
在C语言中内存是我们用来存储数据的地址,今天我们来讲一下C语言中常用的内存函数。上述文章讲了一些与内存有关的函数,希望对你有所帮助。
2024-03-16 15:01:18
1294
1
原创 C语言 指针(5) 数组和指针题解析
今天我们继续来了解指针,讲一下sizeof和strlen的区别,数组和指针题解析今天我们讲了指针最后的内容,讲了sizeof和strlen的区别和用法,和指针运算笔试题。希望对你有所帮助。
2024-03-13 22:39:04
1030
原创 C语言 指针(4) qsort函数
今天我们主要来学习一下C语言中的qsort排序函数。上述文章我们继续深入了解指针,同时讲了qsort函数的运用和实现。希望对你有所帮助。
2024-03-12 18:45:59
976
1
原创 C语言 指针(3)
今天我们继续来学习一下指针的内容,我们来认识一下不同的类型的指针变量上述文章讲了一些指针变量的概念和基本语法,希望对你有所帮助。
2024-03-12 09:54:41
1227
1
原创 C语言 指针(2)
我们今天继续来了解指针的内容,让大家更加细致的理解到数组的含义今天讲了指针在数组中的运用,同时还讲了一个排序算法(冒泡排序),希望对你有所帮助。
2024-03-10 12:24:27
882
1
原创 C语言 操作符详解 下
在前面一篇博客中,我们讲了大多数操作符,今天我们来讲一讲剩下的操作符。本章文章讲了前面剩下的结构体访问操作符,同时介绍了操作符的属性,和一些问题表达式的解析。希望对你有所帮助。
2024-03-07 17:46:19
1215
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人