自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ 继承的相关内容 基类和派生类 默认成员函数的区别等问题

上面的例子中,Person类称为父类,也称为基类,而Student类和Teacher类称为子类,也称为派生类。继承受继承方式和访问限定符共同影响。

2025-05-26 22:21:53 895

原创 C++ 关于C++中IO流的相关内容 stringstream的相关介绍

C语言中,将一个整形变量数据转化为字符串格式有两种方法。1、使用itoa函数进行转化。int a = 10;//将整型的a转化为十进制字符数字存储在字符串arr当中2、使用sprintf函数进行转化。int a = 10;//将整型的a转化为字符串格式存储在字符串arr当中虽然这两种方式能完成转化,但是转化时需要先给出保存结果的空间,而空间难以界定。并且转化格式不匹配时可能会得到错误的结果甚至程序崩溃。C++中,可以使用stringstream类对象来避开此问题。需要包含。

2025-05-19 21:53:37 571

原创 C++ 模板的进阶 关于函数模板和类模板的相关知识

上述代码中,p1所指向的对象d1小于p2所指向的对象d2,但是Less函数并没有比较p1和p2指向的对象,而是比较p1和p2指针的地址,所以结果出错。,但在链接时发现,在main函数当中调用的两个Add函数实际上并没有被真正定义,主要原因是函数模板并没有生成对应的函数,因为在全过程中都没有实例化过函数模板的模板参数T,所以函数模板根本就不知道该实例化T为何类型的函数。分离编译模式下,一般有三个文件,一个头文件用于函数的声明,一个源文件用于函数的定义,另外一个源文件用于调用头文件中的函数。

2025-05-14 21:27:41 889

原创 C++ stl中的set、multiset、map、multimap的相关函数用法

1、set是按照一定次序存储元素的容器,使用set的迭代器遍历set中的元素,得到的元素序列是有序的。2、set当中存储元素的value都是唯一的,不可以重复,因此使用set能够进行去重。3、与map/multimap不同,中存储的是真正的键值对<key, value>set中只放value,但在底层实际存放的是由构成的键值对,因此在set容器中插入元素时,只需要插入value即可,不需要构造键值对。4、set中的元素不能被修改。

2025-05-11 22:03:19 1363

原创 C++ stl中的priority_queue的相关函数用法

使用vector作为底层容器,内部构造大堆结构使用vector作为底层容器,内部构造小堆结构不指定底层容器和内部需要构造的堆结构方式三中默认使用vector作为底层容器,内部默认构造大堆结构。底层容器除了可以使用vector,还可以使用list。

2025-05-11 20:38:42 406

原创 C++ stl中的stack和queue的相关函数用法

使用默认的适配器定义栈。使用特定的适配器定义栈。如果没有指定容器时,默认使用deque使用默认的适配器定义队列。使用特定的适配器定义队列。如果没有指定适配器时,默认使用deque。

2025-05-09 21:41:01 469

原创 C++ stl中的list的相关函数用法

1.list是一种可以在常数范围内在链表中的任意位置进行插入和删除的序列式容器,并且该容器能够前后双向迭代。2.list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立结点当中,在结点中通过前驱指针指向其前一个元素和后继指针指向后一个元素。3.list与非常相似,最主要的不同在于forward_list是单链表,只能进行单方向迭代。4.与其它容器相比,list通常在某个位置进行插入、删除元素的执行效率更高。

2025-05-09 21:03:47 1296

原创 C++ stl中的vector的相关用法 迭代器失效问题

1、vector是用于表示可变大小数组的序列容器。2、vector就像数组一样,采用的是连续的空间来存储元素,也意味着可以通过下标对vector的元素进行访问和修改。3、普通数组的大小不可以动态改变,vector的大小可以动态改变。4、当vector需要重新分配大小时,其做法是,分配一个新的数组,然后将全部元素移到这个数组当中,并释放原来的数组空间。5、vector分配空间策略:vector会分配一些额外的空间以适应可能的增长,因此存储空间比实际需要的存储空间一般更大。

2025-05-07 21:28:39 742

原创 C++ stl中的string的相关用法

string();//构造一个空字符串//复制s所指的字符串//复制s所指字符串的前n个字符//生成有n个c字符的字符串//复制str//str中从字符下标pos开始的len个字符构成的子串string s1;//空字符串//复制"hello string"//复制"hello string"的前3个字符 为"hel"//生成10个'h'字符的字符串 为"hhhhhhhhhh"//s5为复制s2的结果//复制s2中从字符位置0开始5个字符的部分 为"hello"

2025-05-07 19:36:37 836

原创 C++ 模板的初阶 函数模板和类模板的简单了解

在编译器编译阶段,对于模板函数的使用,编译器需要根据传入的实参类型来推演生成对应类型的函数以供调用。比如:当用int类型使用函数模板时,编译器通过对实参类型的推演,将T确定为int类型,然后产生一份专门处理int类型的代码。通过实参a1会将T推演为int,通过实参d1会将T推演为double类型,但模板参数列表中只有一个T,当我们想要实现一个交换两个元素的函数时,首先我们要知道,交换的两个元素的类型有很多种可能。来解决这个问题,即告诉编译器一个模板,让编译器根据不同的类型,用这个模板生成对应的代码。

2025-05-06 17:47:21 940

原创 C++ 内存管理 new 和 delete

例如有以下自定义类型class Testpublic:Test() //构造函数:_a(0)cout << "构造函数" << endl;~Test() //析构函数cout << "析构函数" << endl;1.动态申请单个类的空间// 使用new和delete//申请delete p1;//销毁// 使用malloc和free//申请free(p2);//销毁2.动态申请多个类的空间// 使用new和delete//申请//销毁。

2025-05-02 18:50:38 790

原创 C++ 类和对象(3)初始化列表、友元函数、内部类

在定义时就必须进行初始化的变量类型,就必须放在初始化列表进行初始化。3.C++11⽀持在成员变量声明的位置给缺省值,这个缺省值主要是给没有显示在初始化列表初始化的成员使用的4.

2025-04-29 21:33:27 812

原创 C++类和对象(2)关于类的默认成员函数

7.我们不写,编译器默认生成的构造,对。

2025-04-29 19:25:31 676

原创 关于codeforces设置中文 以及 插件安装后没显示中文的问题解决

如果发现没有翻译成中文,那么此时可以打开管理扩展,看看是否开启了开发人员模式,再重新进入。如果能正常使用的话,这个插件中这个位置是打开的,并且页面部分内容也成功翻译为中文。下载之后,此时打开codeforces还没有变化,还需要安装另一个插件。然后进入这个镜像站,之后搜索 Codeforces Better!此时可以重新到codeforces当中查看是否能够翻译为中文。然后在我们的纂改猴当中,就可以打开这个插件了。成功之后我们就可以对题目进行选择性翻译了。首先在浏览器中的扩展里面下载纂改猴。

2025-04-28 17:28:47 388

原创 C++ 类和对象(1)

在C++中,定义类的关键词有两个,分别是class和struct// 关键字class 定义类class N{ // N为该类的名字// 成员变量int a;double b;// 成员方法// 注意此处的 ";" 不能省略// 关键字struct 定义类struct N{ // N为该类的名字// 成员变量int a;double b;// 成员方法// 注意此处的 ";" 不能省略类中的变量称为属性或成员变量;类中的函数称为类的方法或者成员函数。

2025-04-28 10:21:15 768

原创 C++ 基础内容入门

1、定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接⼀对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。2、 namespace本质是定义出⼀个域,这个域跟全局域各自独立,不同的域可以定义同名变量。命令空间中所有内容都局限于该命名空间中。3、 C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/类型出处(声明或定义)的逻辑,所以有了域隔离,名字冲突就解决了。

2025-04-27 19:31:38 834

原创 C语言 之 自定义类型:结构体、结构体内存对齐、修改默认对齐参数 详细说明 可以来看看哟

这是不行的,因为⼀个结构体中再包含⼀个同类型的结构体变量,这样结构体变量的大小就会无穷的大,是不合理的。这个也是不行的,因为Node是对前面的匿名结构体类型的重命名产生的,但是在匿名结构体内部。2.匿名的结构体类型,如果没有对结构体类型重命名的话,基本上只能使用一次。1.编译器会把上面的两个声明当成完全不同的两个类型,所以是非法的。结构体变量的创建有以下几种方式,都是可以的。在声明结构的时候,可以不完全的声明。

2024-08-25 23:21:26 519 1

原创 C语言 之 浮点数在内存中的存储 详细讲解

常见的浮点数:3.14159、1E10(表示1*10^10)等浮点数家族包括: float、double、long double 类型。浮点数表示的范围在float.h 中有定义。

2024-08-25 21:37:48 1266

原创 C语言 之 整数在内存中的存储、大小端字节序和字节序的判断

之所以要将i强转为char* 类型,就是因为char* 只能读取一个字节大小的空间,i在内存空间中,肯定是一端为0,一端为1,i的二进制的形式那就是最右端为1,即1为低位,当使用char*去读取这个i的内存空间时,访问的是低地址位置,若解引用得到的值是1,那就符合小端,反之则大端。其实高位和地位的区分就类似于我们的阿拉伯数字,例如数字123,3是个位,2是十位,1是百位,那么3就是低位,所以类似的,0x11223344中,44就是低位了。高位的⼀位是被当做符号位,剩余的都是数值位。⼤端(存储)模式:是指。

2024-08-23 20:03:40 971

原创 C语言 之 memcpy函数的内存重叠问题 及解决该问题的思路

这个函数能够在source指向的空间中拷贝num个字节的内容到destination指向的空间中,当source指向的空间内容与destination指向的空间内容重叠时,就会产生这个问题,达不到预期的结果。首先,我们看上面这个例子,我们要将arr1指向的内容拷贝到arr1+2指向的内容中,拷贝20个字节,由于该数组是int类型,所以20个字节是5个元素。内存重叠问题解决的主要思路就是根据source指针和destination的指针的前后位置要有不同的拷贝方式,像上面的这种情况就应该使用。

2024-08-23 18:16:36 1367

原创 C语言 之 内存函数 memcpy、memmove函数的使用和模拟实现 memset、memcmp函数的使用

1.函数memcpy是从source的位置开始向后复制num个字节的数据到destinatio指向的内存位置。所以为了解决这个问题我们就根据这两个指针的位置的前后不同来进行不同的处理,加上了从后往前拷贝这个方法,就能解决这个问题了。memcpy是默认从前往后拷贝的,所以一旦位置出现问题,即dst和src两个指针的位置前后出现问题,就会造成影响。1.和memcpy的差别就是memmove函数处理的源内存块和⽬标内存块是可以重叠的。为了解决内存重叠的问题,我们可以通过改变拷贝的方式来解决。

2024-08-22 23:41:19 1221

原创 C语言 之 字符相关函数和字符串相关函数的大合集 详细解析 快来看看吧!!

来记录程序的当前错误码,只不过程序启动的时候errno是0,表示没有错误,当我们在使⽤标准库中的函数的时候发⽣了某种错误,就会将对应的错误码,存放在errno中,而⼀个错误码的数字是整数很难理解是什么意思,所以每⼀个错误码都是有对应的错误信息的。3.strtok函数找到str中的标记时,会将其用\0结尾,返回一个指向这个标记的指针(需要注意的是,strtok函数会改变被操作的字符串,所以在使用strtok函数切分字符串时一般使用的是临时拷贝的内容,并且内容可以被修改)

2024-08-18 20:10:33 1934 7

原创 C语言 之 strstr函数的使用和模拟、strtok函数的使用、strerror函数和perror函数的使用

strstr函数的使用和模拟、strtok函数的使用、strerror函数和perror函数的使用

2024-08-18 20:01:39 939

原创 C语言 之 字符串函数strncpy、ctrncat、strncmp函数的使用

⽐较str1和str2的前num个字符,如果相等就继续往后比较,最多比较num个字母,如果提前发现不⼀样,就提前结束,⼤的字符所在的字符串⼤于另外⼀个。2.如果source 指向的字符串的长度小于num的时候,只会将字符串中到 \0 的内容追加到destination指向的字符串末尾。1.将source指向的字符串的前num个字符追加到destination指向的字符串末尾,之后再追加⼀个 \0 字符。2.如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个。

2024-08-18 17:41:44 356

原创 C语言 之 strlen、strcpy、strcat、strcmp字符串函数的使用和模拟实现

本章的内容主要讲解strlen、strcpy、strcat、strcmp这4个字符串函数的使用和模拟实现

2024-08-17 22:53:06 762

原创 C语言 之 字符相关函数

本章内容主要讲的是c语言中的字符相关的一些函数的作用用法和使用为了方便我们对字符的各种操作,C语⾔标准库中提供了⼀系列库函数,我们大概可以根据其功能分成两类函数。

2024-08-17 19:11:20 589

原创 关于vs调试的一些基本技巧方法,建议新手学习

当程序员写完代码,测试再对程序进⾏测试,直到程序的质量符合交付客户使用的标准,这个时候就会设置为 release ,编译产⽣的就是 release 版本的可执⾏程序,这个版本是用户使用的,⽆需包含调试信息等。运行时错误是多种多样的,当遇到这种问题时,我们首先可以读一读代码,找找可能出错的位置,再在这些地方进行调式,逐步排查并且找出错误。所以我们每次开始写代码的时候一般都是为Debug模式。在打开内存窗口后,要在地址栏输⼊:arr(数组的首元素表示地址),&num,&c,这类地址,就能观察到该地址处的数据。

2024-08-09 19:30:30 881

原创 C语言 之 理解指针(9)与指针相关的理解题

指针相关的理解题目

2024-08-09 17:39:36 1057

原创 我的创作纪念日

现在学历不怎么样,计划是先学好技术为先,往后的知识是越来越多,并且伴随着难度的提升,学习压力肯定不小,但是我肯定能够坚持学下去。对于日常写博客这方面,有时候因为其它事情的耽误确实需要很久才能写一篇,所以我应该提高学习效率,并且能够抽出时间来写博客。在这一段时间的写博客过程中,能够让我发现之前的学习过程中遗漏的一些问题并解决,并会有一个很不错的复习效果。你需要花时间去回想所学的知识,需要深刻地对知识去理解,并思考如何用简单的话语描述这抽象的知识。而博客也会写好,我相信,博客会见证我的成长。

2024-08-08 21:57:00 218

原创 C语言 之 理解指针(8)数组和指针相关的题目 详细解答 快来观看

这里主要讲解的是通过sizeof和strlen来对数组和指针进行更深入的一些了解,建议有兴趣与初学者可以先尝试自己思考来完成。

2024-08-01 19:49:34 826

原创 C语言 之 理解指针(7)sizeof和strlen的对比

本文主要介绍的是sizeof和strlen的对比

2024-07-27 16:45:54 334

原创 C语言 之 理解指针(6)

本文主要讲了回调函数的相关介绍和例子,以及通过qsort函数讲一步深入理解回调函数

2024-07-27 15:42:59 572

原创 C语言 之 理解指针(5)

本文章主要内容是函数指针数组的用途-转移表 以计算器为例实现

2024-07-24 23:39:28 382

原创 C语言 之 理解指针(4)

首先就像之前所说的,数组名是首元素的地址,str1和str2两个数组的内容虽然相同,但是使用相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块,所以他们的地址是不同的。我们也知道,数组传参的本质是传首元素的地址,那就意味着⼆维数组传参本质上也是传递地址,传递的是第⼀行这个⼀维数组的地址,由于这个二维数组的首元素地址是一整个数组,那么形参也是可以写成指针形式的,即数组指针变量的形式。所以,根据数组名是数组首元素的地址这个规则,⼆维数组的数组名表示的就是第⼀行的地址,是⼀维数组的地址。

2024-07-24 17:32:58 1019

原创 C语言 之 理解指针(3)

本章主要内容是对数组名的理解、使⽤指针访问数组、⼀维数组传参的本质、⼆级指针、指针数组、指针数组模拟⼆维数组

2024-07-21 22:47:55 1161

原创 C语言 之 理解指针(2)

本章的主要内容是野指针的介绍以及如何避免野指针、assert断言、指针的使⽤和传址调⽤等相关内容。

2024-07-20 23:31:41 1543 5

原创 C语言 之 理解指针(1)

就是先获取该数组的首元素的地址,从前面我们知道,指针的类型的作用是指针+1 所跳过的字节数,int为整形,大小为4个字节,所以p+1就跳过4个字节,p+2就跳过8个字节,计算机的CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后数据也会放回内存中,如果想对这些空间进行高效的管理,就可以。并且我们知道,数组的元素存放是随着下标增长,内存地址变大的。上面的代码创建了一个整型变量n,因为一个整形的大小是4个字节,所以内存中申请了4个字节,⽤于存放整数10,其中每个字节都有地址。

2024-07-20 18:10:49 1465 2

原创 C语言之使用操作符前须知的一些简单基础知识

本篇文章主要讲的是二进制和进制转换、原码、反码、补码、操作符的属性:优先级、结合性这几个使用操作符的时候需要了解的一些简单的基础知识。

2024-07-16 23:35:50 308

原创 C语言之操作符详解 初学者可以来看看喔

首先,我们需要学习的操作符是可以根据其功能作用分为许多类的,大概可以分为以下类让我们来逐个逐个了解吧!算术操作符有这5个上面四个分别是 加、减、乘、除、取余其中取余就是取余数,即一个整数不能继续被除时,余下的数。例如5 % 2 == 1;11 % 3 == 2;这里有以下三个需要注意的点移位操作符有两个首先要注意的是 移位操作符的操作数只能是整数规则:左边抛弃、右边补0如下图所示 是 n=5; n<<1 的结果左移一位之后右边空缺的位置补0要注意经过 n << 1 之后,n的值是不变的,

2024-07-16 20:32:57 1442 3

原创 C语言之 函数的递归及相关的简单习题

对于递归的简单理解就是递归在程序的算法中有广泛的使用,可以说是一个非常重要的知识内容,难度还是有的,现阶段我也只是简单的理解...递归是一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。ps:但是能写出这个递归有一些难度。

2024-07-13 23:36:31 334

空空如也

空空如也

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

TA关注的人

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