自定义博客皮肤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++11(二)

上篇我们讲完了完美转发,但是C++11要讲的内容很多,所以我们就将剩下的内容放到了这篇来讲,准备接受知识的醍醐灌顶吧孩子们。

2025-12-13 20:20:36 1042

原创 智能指针——懂事的指针需要知道如何自我毁灭

之前我们C++11那里说过,C++11 更新的重要内容里有一个叫做智能指针的玩意,这篇文章我们就来看看什么是智能指针。

2025-12-13 20:19:04 747

原创 C++ 11(一)

众所周知,C++11是自C++98大版本以后更新的一个大版本(虽然中间更新了许多小版本,但都没引起什么波澜),新加入了很多新语法,这篇文章我们来讲讲一些C++11才加入的新语法,好多都挺抽象的,虽然难度不比上节,但是确实容易让人混乱,不过别慌,跟上主播的节奏,包你上分的。好,首先我们先来讲一个开胃小菜,这个玩意在之前我们已经数次提到过了,没错,就是列表初始化和初始化列表(initializer_list)。

2025-08-15 10:33:46 1040

原创 unordered_set 和 unordered_map

上一篇文章我们简单实现了哈希表,这篇文章我将使用上节实现的哈希表来封装 unordered_set 和 unordered_map ,并讲解其中一些函数的作用。

2025-08-14 12:17:43 787

原创 哈希表的实现

哈希又叫做散列,就像哈希封装的 unordered_map 和 unordered_set,unordered中文释义就是无序的。表面上哈希表存储数据是无序的,散乱排列的,其实本质就是通过哈希函数和散列方法把关键字 Key跟存储位置建立一个映射关系,查找时通过这个哈希函数计算出Key存储的位置,进行快速查找。在大部分情况下,哈希表的查找效率甚至比红黑树要更高,甚至能够达到惊人的O(1)。

2025-08-11 10:15:42 957

原创 set 和 map 的简单实现

上节说过,我们会直接将上节文章中写的红黑树改造为简单的 set 和 map,首先我会将红黑树改造为模板框架,接着写出迭代器,其实到这里就已经基本结束了,因为 set 和 map 只需要套一层壳就可以了,这节我主要围绕下面几个问题来讲:1、封装map和set框架,解决KeyOfT2、iterator4、key不支持修改的问题。

2025-08-10 09:28:54 839

原创 红黑树及其简单实现

终于到了红黑树部分了,我们之前用的 map 和 set 都是使用红黑树封装的,让我们来看看红黑树到底是个什么东西吧。

2025-08-10 09:28:31 1044

原创 AVL树及其实现

之前我们学了二叉搜索树,但是大家会发现,有时候极端情况下二叉搜索树插入节点时会一直朝着一边插入节点,导致二叉搜索树显得极其不协调,进而导致增删查的效率大打折扣,最坏情况下甚至可能达到O(N),所以我们就需要平衡一下二叉搜索树,降低二叉搜索树的高度进而提高增删查的效率,因此,第一个平衡二叉搜索树 AVL树诞生了。AVL树是一棵自平衡的二叉搜索树,可以是一棵空树,也可以是满足下列条件的二叉搜索树:他的左右子树都是AVL树,并且左右子树高度差的绝对值小于等于1。

2025-08-09 09:31:01 727

原创 map简单例题

上面去重用的是 map<string, int>,此时我们交换 string 和 int 的位置,也就是<int, string> ,这时候就不要用 map 去存储了,而是要用 multimap,否则如果两个单词出现次数相同就会导致一个单词被直接去掉。下面的三种方法开始的步骤一样,我们都是使用 map 去重的特点,将数据存入 map 中对单词去重,但是这里的去重并不是把重复单词去掉,而是把出现的次数当作 value 存储起来,每出现一次,就使 value++。

2025-08-09 09:30:50 801

原创 set 和 map 的使用

上节我们讲过了高阶数据结构的基础二叉搜索树,这节我们来讲一下 set 和 map 的使用,前情提要:这节不手撕 set 和 map 的实现,因为虽然他们的底层都是二叉搜索树,但是cpp库里的两个数据结构都是由红黑树实现的,红黑树难度较高,后面我们再来讲。

2025-08-07 11:22:57 942

原创 二叉搜索树--通往高阶数据结构的基石

又回到数据结构了,这次我们将要学习一些复杂的数据结构,例如 map,set,multimap,multiset 和红黑树,AVL树等,而这些复杂数据结构的基础都是二叉搜索树,避免大家没有听过这个玩意,今天咱们来单独讲一讲二叉搜索树。

2025-08-07 11:22:26 753

原创 多态--运行时多态

大家都知道,面向编程有三大特性:封装,继承和多态,封装就不多说了,继承我已经讲得很详细了,今天我们来讲讲最后一个特性,多态。相信大家会对C++有更深刻的理解。多态是一个继承关系下的类对象去调用同一个函数,产生了不同的行为。实现多态有两个必须的条件:1、必须是基类的指针或引用调用虚函数2、被调用的函数必须是虚函数,且该虚函数完成了虚函数重写/覆盖说明:第一个条件必须要满足,因为只有基类的指针或引用才能既指向基类对象又指向派生类对象。

2025-08-06 16:00:20 974

原创 继承(二)--父亲和儿子的那些事

此篇文章是承接上篇文章内容进行续写,想要的内容找不到可以去上一篇文章查找。好了,到这里继承就结束了,说实话,好多东西都挺恶心人的,很繁杂,我已经尽量写的简单了,有不对的地方希望大家指正。

2025-08-06 15:59:55 891

原创 模板的进阶

那么什么是分离编译呢?一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有 目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。之前我们讲过模板不能将声明和定义分开,但是为什么呢,其实程序的运行分为 预处理-》编译-》汇编-》链接 四个步骤,再进行链接之前,各个文件是不会互相沟通链接的,也就是说他们会各干各的。

2025-08-05 16:54:56 764

原创 继承(一)--父亲和儿子的那些事

当我们创建多个类时,他们有着许多共同点,我们还需要创建每个类时都包含这些共同信息吗,那也太麻烦了,于是就有了继承的概念,比如学校职工和学生都拥有自己的工号,姓名等等,我们就可以创建一个父类来存放这些变量,然后子类继承这些东西根据实际情况进行填写,是不是很实用呢,那么我就来聊聊继承。

2025-08-05 16:53:39 931

原创 string类(三)————string类的简单实现、引用计数的写时拷贝以及三个swap

到了这一节我们的string类基本就结束了,最后来讲一下string类的实现以及补上前两节的小坑,也就是我们之前提到的三个不同的swap函数。话不多说,我们直接上正文。

2025-08-04 10:52:24 439

原创 大整数相加问题

对于较大的整数相加问题,我们如果用常规思想,也就是直接用加法进行计算,那我们能够计算的位数是有限的,计算机的计算位数在32为平台下最多能计算到4294967296,64位平台下虽然是两个2^32相乘,但是你写上代码,发现依然无法解决问题。有同学问为什么不是 && ,而是 || ,大家想一下,我们写while循环是写循环进行的条件,而不是写循环终止的条件,如果你写了 && ,那么就只要有一个end < 0,循环就会终止,那么位数多的那一个字符串不就只走了一半吗?接着我们拿出字符串的最后一位,如下。

2025-08-04 10:52:05 398

原创 string类(二)

这一篇其实是上一篇文章常见接口的续写,量大管饱的宝贝们,哈哈😄😄😄。

2025-02-11 23:43:49 971 2

原创 string类(一)

先科普一下STL库,网上有句话说:“不懂STL,不要说你会C++”。STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。我们通常将string类当作STL库的容器,因为它的属性和使用都可以称作合格的容器,但是归根结底他其实不属于容器,因为历史原因,他其实比STL库诞生的早。STL库能帮你更快速更便捷的使用C++,所以这是大家必须要掌握的内容,我们先从string类讲起。

2025-02-11 16:34:17 596

原创 定位new表达式

之前内存管理有个内容忘了讲,对不起大家了哈,不过这个内容现阶段其实也用不上。所以,这节内容其实是之前的文章内存管理的补充。

2025-02-09 19:36:38 510

原创 模板初阶,论如何将脏活累活交给编译器

我们写一些函数时有没有觉得由于类型的限制,一个相同的函数要根据类型的不同写好几遍,这就导致了一个程序大部分都是无效代码,但又不得不写,于是函数模板这一概念就诞生了。class 类模板名// 类内成员定义用法和函数模板相同,就不多说了。但是模版不建议声明和定义分离到两个文件.h 和.cpp会出现链接错误,具体原因后面会讲。

2025-02-09 15:52:14 947

原创 C/C++内存管理

在上一篇文章中我们讲完了类和对象的基本内容,而大家也知道,C++是一个注重底层逻辑的语言,所以我们这一篇文章讲一讲C语言和C++中的内存管理,让大家对底层内存的划分和内存管理的方式(也就是如何开辟空间与销毁空间有一个较为浅显的认知)new/delete和malloc/free对于内置类型上的作用基本没有区别,但是在自定义类型中会有区别,申请的是自定义类型空间时,new同时会调用构造函数,delete会调用析构函数,而malloc和free不会。

2025-02-09 15:51:57 1696 1

原创 类和对象(下)(二)

2、

2025-02-08 11:40:29 581

原创 类和对象(下)(一)

那有同学就会问了,只有定义的时候才能对其进行赋值,为什么初始化列表可以,这就是我们接下来要讲的重中之重:语法理解上初始化列表可以认为是每个成员变量定义 初始化的地方。C++11支持在成员变量声明的位置给缺省值,这个缺省值主要是给没有显式在初始化列表初始化的 成员使用的。

2025-02-08 11:40:18 942

原创 类和对象(中)(二)

搞明白了以上内容,我们可以在将自定义类型传参给一个函数时就可以引用传参,好处是减少了拷贝,从而节省了需要为拷贝值存储开辟的空间。

2025-01-17 20:49:42 698

原创 类和对象(中)(一)

7. 我们不写,编译器默认生成的构造,对内置类型成员变量的初始化没有要求,也就是说是是否初始化是不确定的,看编译器。对于自定义类型成员变量,要求调用这个成员变量的默认构造函数初始化。如果这个成员变量,没有默认构造函数,那么就会报错,我们要初始化这个成员变量,需要用初始化列表才能解决。

2025-01-17 20:47:26 993

原创 关于类和对象三个简单的例题

那么我们现在来解析一下会不会运行崩溃,我们上一篇文章讲过,对象不会存储类成员函数的指针,也就是说这个成员函数实际上并不在对象中因此就不存在解引用这个说法,而 p-> 在这里的作用其实一是代表调用的Print函数是属于类A的成员函数,二是在调用成员函数时需要传this指针, p-> 就表示把p作为this指针传给成员函数,所以该代码会正常运行,因此选择C选项。但是这里调用成员函数时,函数中会打印类成员 _a ,而 _a 存在于对象中,就变成了空指针的引用,就会出现运行崩溃的问题,因此选择B选项。

2025-01-14 21:13:55 189

原创 类和对象(上)

public:// 成员函数perror("malloc申请空间失败");return;top = 0;// ...扩容int Top()private:// 成员变量int* array;size_t top;// 分号不能省略Stack为类的名字,{}中的内容为类的主体。注:类定义结束后必须加上“;

2025-01-14 19:59:04 1109

原创 简聊操作符(上)

哈嗨!!!我又来了,今天我们来聊聊操作符吧,很多同学觉得加减乘除这种东西,谁都会,简单的一批,有什么好讲的呢?欸~~,我只能说,肤浅了哥们儿,其实虽然C语言中虽然操作符不多,但用起来却又好多地方值得我们推敲,操作符使用的正确与否,操作符使用的位置以及从哪个地方优先进行计算都有可能影响到最终的结果,所以我觉得还是很重要的,那今天我们就来简单聊一下那些神秘的操作符吧!!!❤。

2025-01-13 21:16:47 699

原创 循环分支总结

相信很多人不清楚什么是计算机语言,没有接触这门语言的人会觉得听起来就很高级,其实,单从这个名字方面来讲,其实还是很好解释的,虽然你不清楚何为计算机语言,但你一定清楚什么是汉语和英语吧,其实这些各国语言统称为自然语言,自然语言是人与人之间交流使用的媒介;而计算机语言与他们不同,他是人与计算机进行交流的媒介,这样听起来是不是就很好理解了呢。下面我们就来进入C语言基础中的循环分支语句吧,我会给大家尽可能详细的总结出这里比较重要的知识点,让我们一起努力吧!!!💪💪💪。

2024-07-27 22:27:13 2054

原创 扫雷游戏(简陋版)

1、可以通过菜单进入或退出游戏2、游戏自动设置为简易难度,也就是在9*9的格子里找到10个地雷(游戏代码可以通过更改头文件中的EASY_COUNT的大小来自动调节难度)3、输入坐标排查地雷(注:坐标轴默认左上角为原点)4、找到雷以外的所有安全位置即为通关(友情提示:虽然是简单难度,但其实是考验运气的,正常情况下一次也过不去,因为毕竟一次只能开一个格子,如果你能通过,那恭喜你,买彩票肯定也能中)OK,废话不多说:直接上游戏设计。

2024-07-25 14:45:01 1764

原创 猜数字游戏(简陋版)

define _CRT_SECURE_NO_WARNINGS 1 //可以让vs忽略scanf的返回值printf("**********输入1开始游戏**********\n");printf("**********输入0退出游戏**********\n");printf("您一共有五次机会!!!\n");= 0)printf("您还剩下%d次机会\n", count);printf("猜大了\n");printf("猜小了\n");else。

2024-07-23 19:40:33 1789 1

原创 用C语言判断一个年份是否为闰年(新手)

首先,我想大家都知道闰年的判断方法有两种:第一种就是你所要判断的那个年份(暂且称之为year)能被4整除并且不能被100整除;第二种就是year能直接被400整除。下面我将用C语言进行代码编写。

2024-07-23 17:35:53 506

空空如也

空空如也

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

TA关注的人

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