自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++进阶(五) 哈希

α是散列表装满程度的标志因子。由于表长是定值,α与“填入表中的元素个数”成正比,所以,

2024-04-07 22:37:26 712

原创 C++进阶(四) map和set

set文档介绍set是按照一定次序存储元素的容器在set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的。set中的元素不能在容器中修改(元素总是const),但是可以从容器中插入或删除它们。在内部,set中的元素总是按照其内部比较对象(类型比较)所指示的特定严格弱排序准则(

2024-03-22 09:57:38 797

原创 探索基础IO

pathname: 要打开或创建的目标文件flags: 打开文件时,可以传入多个参数选项,用下面的一个或者多个常量进行“或”运算,构成flags。参数:O_RDONLY: 只读打开O_WRONLY: 只写打开O_RDWR : 读,写打开这三个常量,必须指定一个且只能指定一个O_CREAT : 若文件不存在,则创建它。需要使用mode选项,来指明新文件的访问权限 O_APPEND: 追加写返回值:成功:新打开的文件描述符(file descriptor)失败:-1。

2024-03-19 18:43:19 785

原创 C++进阶(三) 二叉搜索树

BSTreeNode// 二叉搜索树节点结构体/*template<class K> 表示定义了一个模板类 BSTree,并且该类可以使用一个类型参数 K,这样在实际使用时可以将任意类型作为 K 的具体类型*/// 定义一个别名 Node,指向 BSTreeNode 类型的节点// 左子节点指针// 右子节点指针K _key;// 节点键值// 构造函数,初始化节点的键值,并将左右子节点指针初始化为空指针{}

2024-03-03 22:47:21 865

原创 C++进阶(二) 多态

多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了 Person。Person对象买票全价,Student对象买票半价。那么在继承中要构成多态还有两个条件1. 必须通过基类的指针或者引用调用虚函数2. 被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写在虚函数的后面写上 =0 ,则这个函数为纯虚函数。包含纯虚函数的类叫做抽象类(也叫接口 类),抽象类不能实例化出对象。派生类继承后也不能实例化出对象,只有重写纯虚函数,派生 类才能实例化出对象。纯虚函数。

2024-03-03 22:28:40 975

原创 C++进阶(一) 继承

下面我们看到Person是父类,也称作基类。Student是子类,也称作派生类。C++语法复杂,其实多继承就是一个体现。有了多继承,就存在菱形继承,有了菱形继承就有菱形虚拟继承,底层实现就很复杂。所以一般不建议设计出多继承,一定不要设 计出菱形继承。否则在复杂度及性能上都有问题。多继承可以认为是C++的缺陷之一,很多后来的面向对象语言都没有多继承,如Java。继承和组合public继承是一种is-a的关系。也就是说每个派生类对象都是一个基类对象。组合是一种has-a的关系。

2024-02-20 18:09:39 871

原创 C++初阶(十三) 模板

一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链 接起来形成单一的可执行文件的过程称为分离编译模式。使用模板可以编写通用的代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生,适用于多种数据类型,避免了为每种数据类型都编写相似的代码的重复劳动。模板可以提供编译期间的类型检查,从而在一定程度上提高了代码的类型安全性。通过编译器根据实际使用情况生成具体的代码,可以针对特定的数据类型进行优化,提高程序的性能。

2024-02-18 21:48:28 947

原创 C++初阶(十二) stack和queue

stack的文档介绍stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行 元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定 的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。标准容器vector、deque、list均符合这些需求,默认情况下,如果没有为stack指定特定的底层容器, 默认情况下使用deque。什么是适配器。

2024-02-16 21:51:05 820

原创 C++初阶(十一) list

1. list是可以在常数范围内在的序列式容器,并且该容器2. list的,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向 其前一个元素和后一个元素。3. list与forward_list非常相似:最主要的不同在于,已让其更简单高效。4. 与其他的序列式容器相比(array,vector,deque),5. 与其他序列式容器相比,list和forward_list,比如:要访问list 的第6个元素,,在这段位置上迭代。

2024-02-13 22:00:00 1261

原创 进程地址空间

简单来说,每个进程都有自己的地址空间,这个空间是一种抽象的概念,用于描述进程在内存中的布局。它包括了程序代码、全局变量、堆、栈等组成的私有空间,以及与其他进程共享的共享空间。

2024-01-24 01:33:16 804 1

原创 C++初阶(十) vector

(constructor)构造函数声明接口说明vector()(重点)无参构造构造并初始化n个val(重点)拷贝构造使用迭代器进行初始化构造// vector的构造// 构造空的int类型vector// 构造含有4个值为100的int类型vector// 使用迭代器从第二个vector构造第三个vector// 使用拷贝构造函数构造第四个vector,与第三个vector相同// 使用数组初始化构造第五个vector// 使用迭代器遍历打印第五个vector的元素。

2024-01-21 14:50:47 829

原创 C++初阶(九) string类

此时编译器会合成默认的,当用s1构 造s2时,编译器会调用默认的拷贝构造。最终导致的问题是,s1、s2共用同一块内存空间,

2023-12-05 09:22:00 866

原创 C++初阶(八) STL简介(了解)

STL(standard template libaray-标准模板库):是,不仅是一个可复用的组件库,而且。

2023-12-04 15:34:56 993

原创 C++初阶(七) 模板初阶

class 类模板名// 类内成员定义// 动态顺序表// 注意:Vector不是具体的类,是编译器根据被实例化的类型生成具体类的模具public :, _size(0){}// 使用析构函数演示:在类中声明,在类外定义。~Vector();// 注意:类模板中函数放在类外进行定义时,需要加模板参数列表。

2023-12-04 15:13:36 950

原创 C++初阶(六) C/C++内存管理

/ new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间还会调用构造函数和析构函数free(p1);delete p2;// 内置类型是几乎是一样的// Cfree(p3);delete p4;free(p5);return 0;

2023-11-14 11:34:16 43 1

原创 初学者必备技能:Makefile编写、Linux进度条和Git命令行操作

make是一种常用的自动化构建工具,可以根据源文件之间的依赖关系,自动执行编译、链接等操作,生成最终的可执行文件或库文件。通过make,开发者可以避免手动编译的繁琐和容易出错的问题。

2023-11-11 23:24:39 48 1

原创 C++初阶(五) 类和对象(下)

定义时不添加static关键字,类中只是声明3. 类静态成员即可用。

2023-11-10 00:10:12 38 1

原创 C++初阶(一)入门

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{} 中即为命名空间的成员。// zs是命名空间的名字,一般开发中是用项目名字做命名空间名。// 我们上课用的是bit,大家下去以后自己练习用自己名字缩写即可,如张三:zs// 1. 正常的命名空间定义// 命名空间中可以定义变量/函数/类型int val;//2. 命名空间可以嵌套int a;int b;int c;int d;

2023-11-07 11:11:08 24 1

原创 Linux权限的概念

目录的可执行权限是表示你可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这 个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

2023-11-04 17:07:34 34 1

原创 C++初阶(四) 类与对象(中)

而_t是Time类对象,所以在d销毁时,要将其内部包含的Time类的_t对象销毁,所以要调用Time类的析构函数。但是:main函数中不能直接调用Time类的析构函数,实际要释放的是Date类对象,所以编译器会调用Date类的析构函 数,而Date没有显式提供,则编译器会给Date类生成一个默认的析构函数,目的是在其内部调用Time 类的析构函数,

2023-10-31 23:13:50 30 1

原创 C++初阶(三) 类与对象(上)

C++实现封装的方式:用类将对象的属性与方法结合在一块,让对象更加完善,通过访问权限选 择性的将其接口提供给外部的用户使用。【访问限定符说明】1. public修饰的成员在类外可以直接被访问2. protected和private修饰的成员在类外不能直接被访问(此处protected和private是类似的) 3. 访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止4. 如果后面没有访问限定符,作用域就到 } 即类结束。

2023-10-29 23:18:02 40 1

原创 C++初阶(二)缺省参数、引用和内联函数

希望本博客能对读者理解和学习C++中的缺省参数、引用和内联函数有所帮助。如有任何疑问或建议,请随时在评论区留言。

2023-10-26 21:09:42 39

原创 快速排序与归并排序

快速排序和归并排序是两种常见且高效的排序算法,它们都基于比较操作来实现数据排序。快速排序通过选择基准元素将待排序数据划分成左右两个子序列,然后递归对子序列排序;归并排序通过递归地将待排序数据分割成较小的子序列,然后合并排序好的子序列。在实际应用中,我们可以根据具体需求选择合适的排序算法。

2023-10-06 12:21:00 364 1

原创 二叉树的实现

在开始实现二叉树之前,首先需要定义二叉树的数据结构。// 节点数据// 左子节点指针// 右子节点指针}BTNode;上述代码定义了一个结构体,包含了节点的数据和左右子节点的指针。其中,BTDataType可以根据具体需求进行定义,本示例中我们使用char类型作为节点数据。

2023-09-20 22:39:58 59 1

原创 栈和队列介绍与实现

栈是一种线性数据结构,它具有“后进先出”(Last In First Out,LIFO)的特性。栈可以看作是一种特殊的线性表,只能在表的一端进行插入和删除操作,这一端被称为栈顶。栈的插入操作称为入栈(Push),删除操作称为出栈(Pop)。栈不支持随机访问,只能访问栈顶元素。队列是一种线性数据结构,它具有“先进先出”(First In First Out,FIFO)的特性。队列可以看作是一种特殊的线性表,只能在表的一端进行插入操作,称为队尾,只能在表的另一端进行删除操作,称为队首。

2023-08-07 23:40:56 245 1

原创 程序环境和预处理

预定义符号是C语言中预先定义好的一些符号,它们可以在程序中直接使用,无需进行声明或定义。预定义符号主要分为两类:预定义宏和预定义标识符。预定义宏是以__开头和结尾的宏。它们在C语言的编译器中预定义好了,可以直接在程序中使用。常用的预定义宏有__FILE__ //进行编译的源文件__LINE__ //文件当前的行号__DATE__ //文件被编译的日期__TIME__ //文件被编译的时间。

2023-07-17 22:37:06 56 1

原创 语言文件操作

在计算机中,文件是指一组相关数据的集合,可以通过文件名来访问和操作这些数据。文件可以分为文本文件和二进制文件两种类型。

2023-07-17 17:45:11 78 1

原创 动态内存分配

在C语言中,有几个常用的动态内存分配函数,分别是malloc、free、calloc和realloc。malloc函数用于在堆上动态分配指定大小的内存空间。它的声明如下:其中,size是需要分配的内存空间的大小,单位是字节。malloc函数返回一个指向分配内存的指针,如果分配失败,则返回NULL。int *ptr;// 动态分配10个int类型的内存空间// 分配失败} else {// 分配成功free函数用于释放通过malloc函数分配的内存空间。

2023-07-17 16:13:05 579 1

原创 自定义类型:结构体,枚举,联合

结构体变量的定义和初始化与普通变量类似,可以在声明时定义和初始化,也可以在后续代码中进行定义和初始化。int x;int y;}p1;//声明类型的同时定义变量p1//定义结构体变量p2//初始化:定义变量的同时赋初值。struct Stu //类型声明//名字int age;//年龄//初始化int data;//结构体嵌套初始化//结构体嵌套初始化位段的声明和结构是类似的,有两个不同:1.位段的成员必须是 int、unsigned int 或signed int。

2023-07-15 17:22:01 70 1

原创 “从底层到应用:掌握C语言中memcpy、memmove、memset和memcmp函数的使用”

/前->后else//后->前return ret;for (i = 0;i < 10;通过比较目标地址和源地址的大小,确定是从前向后移动还是从后向前移动。如果目标地址小于源地址,即从前向后移动,使用一个循环,将源地址的数据逐个复制到目标地址中,并且每次复制后,目标地址和源地址都分别向后移动一个字节。如果目标地址大于等于源地址,即从后向前移动,同样使用一个循环,从后向前复制数据。在main。

2023-07-15 12:50:55 354 1

原创 数据在内存中的存储

char //字符数据类型 1个字节short //短整型 2个字节int //整形 4个字节long //长整型 4(32位平台) / 8(64位平台)个字节long long //更长的整形 8 个字节float //单精度浮点数 4个字节double //双精度浮点数 8个字节。

2023-06-04 15:07:37 40 1

原创 C语言实现扫雷游戏

本文会简单介绍如何写出扫雷游戏的程序的C语言代码,希望大家能够看完,对自己有所帮助!如果你对扫雷游戏不了解,先点击此处认识扫雷游戏。

2023-05-13 23:35:41 98

原创 三子棋游戏实现

本文会简单介绍如何写出一个三子棋的程序的代码,希望大家能够看完,对自己有所帮助!ps:使用#pragma once 是为了防止文件重复引用造成二义性//初始化棋盘//打印棋盘//玩家下棋//电脑下棋//判断输赢//玩家赢 - '*'//电脑赢 - '#'//平局 - 'Q'//继续 - 'C'

2023-05-09 22:46:17 39 1

空空如也

空空如也

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

TA关注的人

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