自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Renswc的博客

不定期分享c/c++干货

  • 博客(83)
  • 收藏
  • 关注

原创 【C++深度探索】二叉搜索树的全面解析与高效实现

二叉搜索树(BST,Binary Search Tree)又称二叉排序树,是一种特殊的二叉树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树

2024-07-18 14:02:12 1346 88

原创 【易编橙 · 终身成长社群】携手并进,成长之路不孤单!

易编橙 · 终身成长社群分享优质内容,帮助编程小伙伴少走弯路! 欢迎新老小伙伴们加入星球,一起分享知识,一起进步!

2024-07-14 15:47:24 1060 86

原创 【C++深度探索】全面解析多态性机制(二)

C++多态实现有两个条件——一是基类的指针或引用调用虚函数,另一个是基类中有虚函数并且在派生类中实现虚函数重写;这两个条件缺一不可,这与多态实现的底层原理有关。

2024-07-13 21:47:28 1756 79

原创 【C++深度探索】全面解析多态性机制(一)

在C++中,多态(Polymorphism)是指通过基类指针或引用来访问派生类对象的一种机制。简单来说,它允许我们在基类类型的指针或引用上调用派生类对象的成员函数。通俗来说,就是多种形态,或者说完成某个行为时,当不同的对象去完成会产生出不同的状态。例如:买票这个行为,当普通人买票时,是全价买票;学生买票时,是半价买票;军人买票时是优先买票。不同的对象去完成同一个行为——买票,会产生不同的状态。在代码中的具体体现则依赖于虚函数在基类中,可以将某个成员函数声明为虚函数,而在派生类中重写该函数。

2024-07-11 11:17:45 1877 95

原创 【C++深度探索】继承机制详解(二)

菱形继承是指在C++中使用多重继承时,出现了多个派生类继承同一个基类,而最终有一个类同时继承了这些派生类,形成了一个菱形的继承结构。

2024-07-08 22:26:59 2087 100

原创 深入探索C语言中的结构体:定义、特性与应用

在C语言中,结构体是一种用户自定义的数据类型,它允许开发者将不同类型的变量组合在一起,形成一个新的数据类型。结构体可以包含多个成员变量,每个成员可以是不同的数据类型,例如整型、字符型、浮点型等。结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。结构体的定义使用关键字struct,后面跟随结构体的名称。int age;上述代码定义了一个名为Person的结构体,它包含三个成员变量:name、age和height。name是一个字符型数组,有20个元素;

2024-07-06 21:12:45 1186 80

原创 掌握高效实用的VS调试技巧

调试(Debugging / Debug),又称除错,是发现和减少计算机程序或电子仪器设备中程序错误的一个过程。调试的基本步骤✨发现程序错误的存在✨以隔离、消除等方式对错误进行定位✨确定错误产生的原因✨提出纠正错误的解决办法✨对程序错误予以改正,重新测试Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。

2024-07-04 13:30:42 1255 80

原创 【C++深度探索】继承机制详解(一)

继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类或子类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。

2024-06-30 22:38:22 2556 102

原创 【C++】模板进阶

模板的特化是指为具体类型或具体参数提供专门的实现。通常情况下,模板的特化是为了解决某些特殊类型或参数的处理需求,使得模板能更好地适应不同的情况。函数模板的特化步骤:必须要先有一个基础的函数模板关键字template后面接一对空的尖括号函数名后跟一对尖括号,尖括号中指定需要特化的类型函数形参表: 必须要和模板函数的基础参数类型完全相同,如果不同编译器可能会报一些奇怪的错误。注意:一般情况下如果函数模板遇到不能处理或者处理有误的类型,为了实现简单通常都是将该函数直接给出。

2024-06-07 05:30:00 2331 180

原创 【数据结构】筛选法建堆

给你一个顺序表或数组(一串数据),通常来说建堆有两种方法一种**堆向上调整算法**,一种**堆向下调整算法建堆**也就是**筛选法**建堆。筛选法建堆是一种快速建堆的方法,它是在堆排序算法中使用的。这种方法的基本思想是通过不断筛选节点,如果建大堆就将大的节点向上筛选,小的节点向下筛选,小堆就反之,最终得到一个有序的堆。

2024-06-05 23:42:05 2050 35

原创 【C++】优先级队列介绍与模拟实现

优先级队列是一种特殊的队列,其中的元素都被赋予了优先级。元素的优先级决定了它们在队列中的顺序。在优先级队列中,元素按照优先级从高到低的顺序出队列。优先级队列可以通过不同的数据结构来实现,常用的有二叉堆、二叉搜索树和斐波那契堆等。优先级队列默认使用vector作为其底层存储数据的容器,在vector上又使用了堆算法将vector中元素构造成堆的结构,因此priority_queue就是堆,所有需要用到堆的位置,都可以考虑使用priority_queue。注意:默认情况下priority_queue是大堆。

2024-06-05 11:19:59 2039 106

原创 【C++】STL:栈和队列模拟实现

C++中的stack(栈)和queue(队列)是两种常见的数据结构,用于存储和管理数据。栈是一种先进后出(LIFO)的数据结构,类似于我们平时堆叠的一摞书,只能在顶部进行操作。在C++中,可以使用std::stack模板类来创建栈。栈的主要操作包括压入(push)元素到栈顶、弹出(pop)栈顶元素以及获取栈顶元素等。队列是一种先进先出(FIFO)的数据结构,类似于排队等候的人群,新元素插入队尾,最早插入的元素在队头。在C++中,可以使用std::queue模板类来创建队列。

2024-06-03 06:00:00 1558 29

原创 【C++】List模拟实现

C++中的list是一种双向链表(doubly linked list)的实现。它是C++标准库中的一种容器,可以存储一系列元素,并且允许在任意位置插入、删除和访问元素。对于双向链表有疑问的可以点击查看数据结构——带头双向循环链表详解对于list大部分和前面学习过的vector类似,关键点在于理解list的迭代器的封装以及const迭代器,还有list实现包括了三个类,它们分别都有类模板,容易绕晕,需要好好理解清楚

2024-05-31 22:05:14 2254 115

原创 【C语言】打造你的专属贪吃蛇

我们使用了Windows提供的一些函数来设置控制台信息以及颜色,并且通过对链表的学习构建了蛇的节点,并使用结构体指针封装了整条蛇,此外还有一些个性化的设计,当然这里还有很多有趣的功能没有实现等着大家去挖掘开发

2024-05-29 23:40:16 2139 113

原创 【C++】Vector的简易模拟与探索

C++STL标准库中vector的模拟实现了,在实现过程中,我们使用了动态内存分配来实现vector的大小动态调整,并通过指针来管理内存。我们还实现了一些常用的成员函数,如push_back、pop_back、at等,以及一些运算符重载,如[]、=等。通过实现这个简单的vector类,我们不仅加深了对vector容器的理解,还学习了一些C++的底层原理和技巧。同时我们也遇见并解决了一些问题比如迭代器失效,深浅拷贝

2024-05-27 13:14:34 1634 124

原创 【C++】探索STL中的高效容器:vector

C++中的vector是标准模板库(STL)提供的一种容器,用于存储和操作动态数组。功能类似于我们之前学习的顺序表,它可以在运行时动态调整大小,与C++内置的数组相比,提供了更多的功能和便利性。

2024-05-20 20:07:06 2508 154

原创 【C++】string类模拟实现:探索其内部机制

string类的模拟实现最主要是实现string类的**构造、拷贝构造、赋值运算符重载**以及**析构函数**,以下是对模拟实现string类变量以及函数的封装,自主实现string类的所有内容

2024-05-16 22:30:50 2275 129

原创 【C++】 string类:应用与实践

①使用getline函数(后文有解析)获取一行字符串;②使用rfind函数(使用方法在后文)从字符串末尾往前找到第一个空格,返回该空格的位置;③使用size函数得到整个字符串长度,减去之前空格的位置再-1,得出最后一个单词的长度。//获取一行字符串//从后往前遍历找到空格的位置//计算最后一个单词长度//打印长度🥳🥳getline使用方法getline是C++中用于从输入流中读取一行文本的函数。

2024-05-13 22:03:37 1518 130

原创 【C++】学习string类:字符操作的艺术

C++的string类是用于处理字符串的标准库类。它定义在头文件中,并位于std命名空间下。C++的string类提供了一系列成员函数和操作符,用于操作和处理字符串。在使用string类时,必须包含#include头文件以及详情可以点击链接查看——string类文档介绍总的来说,C++的string类提供了丰富的方法和操作符,方便我们对字符串进行各种操作。使用string类可以避免手动处理字符串的繁琐和容易出错的问题,提高代码的可读性和可维护性。

2024-05-09 21:37:44 1478 99

原创 Baidu Comate——您的智能编码伙伴

Baidu Comate是一款基于文心大模型的智能代码助手,由百度开发并推出。该工具可以帮助开发人员在编写代码的过程中提供智能化的提示和建议,从而提高编码的效率和质量。它结合了百度多年积累的编程现场大数据和外部优秀开源数据,旨在提升编码效率,释放“十倍”软件生产力。

2024-05-07 21:59:08 12963 112

原创 【Linux】掌握Linux系统编程中的权限与访问控制

Linux权限是指对文件和目录的访问控制。每个文件和目录都有一个所有者和一个所属组,而且还可以赋予其他用户的访问权限。Linux权限控制了文件和目录的读、写和执行权限,通过设置不同的权限组合可以限制用户对文件和目录的访问。

2024-05-06 22:40:37 2859 93

原创 【C++】模板初阶:泛型编程的起点

使用C++模板,可以定义函数模板和类模板。函数模板是一种通用的函数定义,可以用于处理多种类型的输入参数。例如,可以编写一个通用的排序函数模板,可以用于排序整数、浮点数、字符等类型的数据。类模板是一种通用的类定义,它可以用于创建具有相似结构和行为的多种类对象。例如,可以编写一个通用的容器类模板,可以用于存储不同类型的数据。C++中的模板是一种强大的机制,可以实现泛型编程,提高代码的可重用性和灵活性。它是C++中重要且常用的特性之一。

2024-05-05 16:45:08 2120 99

原创 【C++】探索C++内存管理:机制揭秘与内存安全

C++使用的内存管理方式:通过new和delete操作符进行动态内存管理。相较于C语言得maloc,new不用计算开辟空间的大小也不需要进行类型的强制转换,还可以进行初始化;此外new和delete对于自定义类型除了开辟空间和释放空间,还可以自动调用它得构造函数和析构函数;通过合理的内存管理,可以提高程序的性能和稳定性,减少内存相关问题的发生。

2024-05-02 16:33:20 2196 99

原创 【Linux系统编程】基础指令(三)

在Linux中,echo指令用于在终端上显示文本或变量的内容。它的常见用法是将文本输出到终端或将文本写入文件。

2024-04-28 13:45:29 2789 117

原创 【Linux系统编程】基础指令(二)

mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。

2024-04-26 17:02:10 1236 26

原创 【C++类和对象】探索static成员、友元以及内部类

static静态成员在一些场景下可以用来保存全局数据或提供公共的工具函数,也可以用来实现单例模式等。但需要注意,在多线程环境下操作静态成员时需要考虑线程安全性。友元关系提供了一种在需要的情况下访问其他类的私有成员的机制。但由于友元关系破坏了封装性,一般不使用。内部类是指在一个类的内部定义的另一个类。内部类可以直接访问外部类的成员,包括私有成员,而外部类则不能直接访问内部类的成员。。

2024-04-25 09:36:55 2045 103

原创 【Linux系统编程】基础指令(一)

先使用pwd指令查看当前所在目录是root下的code文件夹中,然后通过ls -l指令查看当前code文件夹中的文件与子目录,然后再通过touch tutu.txt指令创建一个文件名为tutu的文本文件;如上图所示我们首先通过ls -l指令查看当前目录下的所有文件与子目录发现有code子目录,我们再通过cd code进入当前目录下的code子目录中,最后通过ls -l查看了code文件中的所有文件与子目录;以上例子说明ls -l指令不仅列出了该目录下所有的子目录与文件还列出文件的详细信息;

2024-04-24 12:19:53 435 14

原创 【Linux系统编程】Linux背景知识

Linux的一个主要优势是其可定制性。用户可以自由修改和定制操作系统以适应他们的需求。此外,Linux以其稳定性和安全性而闻名,这使其成为服务器和其他关键系统的热门选择。

2024-04-23 13:41:18 1723 23

原创 【C++类和对象】初始化列表与隐式类型转换

初始化列表是C++类和对象中初始化成员变量的方式,在一些情况下可以提高效率和代码可读性。隐式类型转换在某些情况下可以方便地进行类型转换,但有时也会导致意外的结果或者不可预测的行为,所以C++提供了explicit来禁止隐式类型转换。

2024-04-22 16:25:12 1693 90

原创 【C++类和对象】const成员函数及流插入提取

在类和对象的成员函数中只读函数可以加const,因为其内部不涉及修改生成;取地址与const取地址这两个运算符一般不需要重载,使用编译器生成的默认取地址的重载即可,只有特殊情况,才需要重载;此外流插入运算符和流提取运算符通常都是以友元函数的形式定义在类的声明内部,这允许它们访问类的私有成员。

2024-04-21 15:27:02 1690 89

原创 【C++类和对象】日期类的实现

以上只是一个简单的日期类示例,实际的日期类可能还包括其他功能,例如日期的格式化等操作。这里只是提供了一个起点,大家可以根据自己的需求对日期类进行扩展

2024-04-20 11:33:08 2006 89

原创 【C++类和对象】拷贝构造与赋值运算符重载

对于C++类和对象的拷贝构造函数与运算符重载它们一个是在创建对象时使用另一个创建好的对象来进行赋值(拷贝构造),另一个则是在两个已经创建好的对象之间进行赋值(赋值运算符重载);此外它们两个如果没有在类中显式实现编译器都会默认生成对应的函数,而此时默认生成的函数对于内置类型会进行浅拷贝,对于自定义类型则会调用它的拷贝构造函数或赋值运算符重载;所以如果是简单的日期类,类中未涉及到资源管理,就可以使用编译器默认生成的函数,对于类含有指针或动态分配的资源比如栈类就不能依靠编译器要自己显式实现对应的函

2024-04-17 21:31:29 2252 110

原创 【C++类和对象】构造函数与析构函数

构造函数和析构函数都是特殊的成员函数,构造函数在对象被创建时自动调用,它的主要作用是初始化对象的数据成员;而C++析构函数在对象销毁时会自动调用,其主要作用是在对象销毁时执行清理操作,例如释放动态分配的内存和关闭文件。

2024-04-14 13:01:11 2203 45

原创 【C++类和对象】类和对象的引入

C++中通过类可以将数据以及操作数据的方法进行完美结合,通过访问权限可以控制哪些方法在类外可以被调用,即封装,在使用时就像使用自己的成员一样,更符合人类对一件事物的认知。

2024-04-13 12:32:25 1542 113

原创 【C++入门】内联函数、auto与基于范围的for循环

auto是一个C++11引入的关键字,用于自动推导变量的类型。通过使用auto关键字,编译器可以根据变量的初始化表达式自动推断出其类型。使用auto关键字可以简化变量类型的声明,特别是当变量的类型相当复杂或较长时。

2024-04-10 19:26:47 2613 109

原创 【C++入门】缺省参数、函数重载与引用

缺省参数函数重载以及引用的出现是为了补充C语言语法的不足以及对C语言设计不合理的地方进行优化,引用的出现大大降低了我们学习C语言时相对于指针的难度,也便于我们更好的理解和使用

2024-04-07 22:47:37 1807 119

原创 【C++入门】关键字、命名空间以及输入输出

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。// tutu是命名空间的名字,一般开发中是用项目名字做命名空间名。// 1. 正常的命名空间定义// 命名空间中可以定义变量/函数/类型//(1)命名空间中定义变量//(2)命名空间中定义函数//(3)命名空间中定义类型int val;//2. 命名空间可以嵌套int a;int b;//嵌套N2int c;int d;

2024-04-05 18:04:42 1561 91

原创 【C++入门】初识C++

✨✨ C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。✨✨ 为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。✨✨1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。

2024-04-03 22:59:55 1627 42

原创 数据结构——lesson13排序之计数排序

计数排序基本思想:1. 统计相同元素出现次数2. 根据统计的结果将序列回收到原来的序列中我们这里利用malloc开辟一个数组来统计相同元素出现的次数,用该数字下标表示相同元素

2024-03-31 15:34:49 2180 108

原创 数据结构——lesson12排序之归并排序

我们学习了归并排序的两种实现——递归与非递归版;并分析了归并排序的时间和空间复杂度

2024-03-31 14:11:37 1742 67

C语言扫雷函数代码实现

C语言扫雷函数代码实现

2024-05-08

空空如也

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

TA关注的人

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