c++笔记仓
文章平均质量分 97
c++从0开始
QuiteCoder
大二软工,欢迎交流
展开
-
【c++】map和set的模拟实现
🔥个人主页Quitecoder🔥c++笔记仓不断完善红黑树功能,最后封装模拟实现。原创 2024-05-24 00:35:31 · 1356 阅读 · 15 评论 -
【c++】红黑树
红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的每个结点不是红色就是黑色根节点是黑色的如果一个节点是红色的,则它的两个孩子结点是黑色的对于每个结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点每个叶子结点都是黑色的(此处的叶子结点指的是空结点)NIL这些规则确保了从根到叶子节点的最长路径不会超过最短路径的两倍。原创 2024-05-23 12:37:08 · 1021 阅读 · 5 评论 -
【c++】AVL树
二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之差的绝对值不超过1(需要对树中的结点进行调整),即可降低树的高度,从而减少平均搜索长度它的左右子树都是AVL树左右子树高度之差==(简称平衡因子)的绝对值不超过1(-1/0/1)==在一个叶节点插入一个元素,一定会改变当前父节点的平衡因子。原创 2024-05-21 20:27:04 · 1147 阅读 · 5 评论 -
【c++】set和map的使用
可以用count快速判断元素在不在。原创 2024-05-18 17:18:40 · 1048 阅读 · 11 评论 -
【c++】二叉搜索树(BST)
1.二叉搜索树的介绍🔥个人主页Quitecoder🔥c++笔记仓朋友们大家好,本篇文章来到二叉搜索树的内容。原创 2024-05-13 21:13:38 · 1723 阅读 · 129 评论 -
【c++】全面理解C++多态:虚函数表深度剖析与实践应用
当创建了派生类。原创 2024-05-11 17:58:52 · 2774 阅读 · 255 评论 -
【c++】继承学习(三)菱形继承的挑战与虚拟继承的策略
低耦合:类和类之间、模块和模块之间关系不那么紧密,关联不高高耦合:类和类之间、模块和模块之间关系很紧密,关联很高本节内容到此结束!!!原创 2024-05-08 23:33:11 · 2199 阅读 · 102 评论 -
【c++】继承学习(二):探索 C++ 中派生类的默认机制与静态成员共享
派生类这里分成了两个部分:父类和自己,原创 2024-05-04 19:16:41 · 2297 阅读 · 213 评论 -
【c++】继承学习(一):继承机制与基类派生类转换
🔥个人主页:Quitecoder🔥专栏:c++笔记仓继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用通过继承,子类可以重用父类的代码,这有助于减少代码冗余和复杂性,并增加代码的可复用性子类和父类是继承关系中的两个基本概念:父类/ 基类:父类是一个更一般的类,它定义了一原创 2024-05-03 19:20:09 · 3229 阅读 · 209 评论 -
【c++】模板编程解密:C++中的特化、实例化和分离编译
所以,当在。原创 2024-05-01 23:25:00 · 2793 阅读 · 208 评论 -
【c++】反向迭代器的探究实现
本来每个容器都要写一个反向迭代器的累,但是自己写,太费劲了 本质写一个反向迭代器的类模板,给编译器传不同的容器的正向迭代器实例化,编译器帮助我们实例化出各种容器的对应反向迭代器编写一个通用的反向迭代器类模板可以省去为每个容器单独定义反向迭代器的麻烦。C++ 标准库中的就是这样一个通用的反向迭代器适配器。它接收一个正向迭代器作为模板参数,反转了其遍历方向,使得利用正向迭代器的容器可以很容易地提供反向迭代能力。原创 2024-05-01 13:19:34 · 1550 阅读 · 30 评论 -
【c++】优先级队列与仿函数:C++编程的强大组合
在C++中,仿函数是一种使用对象来模拟函数的技术。它们通常是通过类实现的,该类。原创 2024-04-30 16:14:26 · 1716 阅读 · 232 评论 -
【c++】深入剖析与动手实践:C++中Stack与Queue的艺术
stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下操作:empty:判空操作back:获取尾部元素操作push_back:尾部插入元素操作。原创 2024-04-27 21:58:35 · 5176 阅读 · 274 评论 -
【c++】探究C++中的list:精彩的接口与仿真实现解密
🔥个人主页:Quitecoder🔥专栏:c++笔记仓构造函数这里的构造函数与vector类似Fill constructor (构造一个有特定数量元素且每个元素都有相同初始值的 ):Range constructor (从另一个迭代器定义范围的容器中构建 ):Copy constructor (使用另一个 来构造一个新的 , 是副本):每个构造函数都有它们独特的用途,可以根据具体需要选择合适的构造函数进行对象的创建和初始化。迭代器迭代器用来遍历链表,下面是迭代器的简单使原创 2024-04-24 15:32:40 · 5140 阅读 · 228 评论 -
【c++】vector模拟实现与深度剖析
1.基本框架🔥个人主页Quitecoder🔥c++笔记仓vector涉及到许多细节问题,比如等,本篇文章我们通过模拟实现来深度理解这块的内容。原创 2024-04-22 17:57:48 · 2944 阅读 · 222 评论 -
【c++】vector的使用
🔥个人主页Quitecoder🔥c++笔记仓朋友们大家好,我们本篇来到一个新的容器,的讲解和使用。原创 2024-04-20 23:38:00 · 2467 阅读 · 194 评论 -
【c++】string类模拟实现
🔥erase删除我们同样有两个版本,先看第一种。原创 2024-04-18 20:09:26 · 1861 阅读 · 178 评论 -
【c++】string类常见接口函数
🔥个人主页Quitecoder🔥c++笔记仓朋友们大家好啊,string。原创 2024-04-11 11:48:15 · 3330 阅读 · 247 评论 -
【c++】初阶模版与STL简单介绍
STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架项目Value原始版本Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原始版本一样做开源使用。HP 版本–所有STL实现版本的始祖P. J. 版本。原创 2024-04-06 12:24:36 · 2651 阅读 · 213 评论 -
【c/c++】深入探秘:C++内存管理的机制
return 0;new/delete和最大区别是new/delete对于【自定义类型】除了开空间,还会调用构造函数和析构函数new过程跳转到构造函数delete调用析构函数operator new,接下来我们来讲解这一部分。原创 2024-04-04 15:29:57 · 4803 阅读 · 209 评论 -
【c++】类和对象(七)
参见友元类的定义,原创 2024-04-02 23:12:33 · 3000 阅读 · 203 评论 -
【c++】类和对象(六)深入了解隐式类型转换
🔥个人主页:Quitecoder🔥专栏:c++笔记仓在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值1.2初始化列表那么,为什么要使用初始化列表呢?它的优势在哪里呢?我们来看构造函数对于下面类的初始化:我们发现const成员变量并不能用函数体进行初始化这三个成员既可以在函数体,又可以在初始化列表,但是类中包含以下成员,必须放在初始化列表位置进行初始化:我们知道,这个只是一个声明,定义是对象实例化时候完成的,有些成员,必须在定义的时候进行初始化初始化列表是每个成原创 2024-03-31 13:57:20 · 3479 阅读 · 223 评论 -
【c++】简单的日期计算器
🔥个人主页Quitecoder🔥c++笔记仓朋友们大家好啊,在我们学习了默认成员函数后,我们本节内容来完成知识的实践,来实现一个简易的日期计算器。原创 2024-03-30 16:33:06 · 1722 阅读 · 38 评论 -
【c++】类和对象(五)赋值运算符重载
🔥个人主页:Quitecoder🔥专栏:c++笔记仓什么意思呢,我们来讲解:首先我们定义日期类Date,并实例化两个对象:我们如何判断两个年份相等呢?如果是常规方法,我们会写一个比较函数,来判断是否相同:那如果我们想直接通过用来判断是否相同呢?这里就用到了操作符重载函数名字为:关键字operator后面接需要重载的运算符符号我们发现,直接进行判断时,调用了比较函数但是这里是全局的定义的,这里会发现运算符重载成全局的就需要成员变量是公有的,即我的成员不能是私有的,那么封装性如何保证?这部分是原创 2024-03-30 01:14:42 · 2304 阅读 · 158 评论 -
【c++】类和对象(四)深入了解拷贝构造函数
我们进行调试在这里按F11,我们目的是进入fun1,函数,这里却跳入拷贝构造函数再按f11,才会进入fun1函数中大概过程如下传值传参需要调用拷贝构造fun2函数可以直接进入。原创 2024-03-27 12:30:10 · 2962 阅读 · 130 评论 -
【c++】类和对象(三)构造函数和析构函数
🔥个人主页:Quitecoder🔥专栏:c++笔记仓如果一个类中什么成员都没有,简称为空类我们看下面这个类特性:那么上面所示的代码构造函数如何写呢?如下:这种是不带参数的在我们进行实例化 时,自动调用构造函数完成初始化,我们可以用汇编代码进行查看:我们也可以在其中加入带参数的构造函数,实现函数重载:代码如下:能不能这样定义呢?这里编译错误,即这里并不能与函数的声明区分开,所以书写格式严格按照上述方法来写如果我们将第一个无参格式屏蔽掉呢?代码中出现错误的原因在于,为类定义原创 2024-03-25 22:57:52 · 3352 阅读 · 144 评论 -
【c++】类和对象(二)this指针
🔥个人主页:Quitecoder🔥专栏:c++笔记仓首先我们定义一个日期类date:首先思考,这里打印函数,访问的变量是哪里的?这里访问的是private声明下的吗?并不是,因为这里只是声明,并没有开辟空间,真正访问的是实例化的d1,d2那么我d1,d2如何找到这两个函数呢?这里就与隐含的指针有关了可以理解为,编译器处理后处理为上述的样子,调用的地方,编译器也会处理:它会把调用对象当做形参进行传递这里我们也能知道,为什么d1访问能打印d1,d2访问能打印d2这个东西我们并不陌生,在前面数原创 2024-03-25 21:06:56 · 2182 阅读 · 90 评论 -
【c++】类和对象(一)
/ 类体:由成员函数和成员变量组成 };class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数class Dateint year;int month;int day;c++习惯定义成员变量时在其前面加上符号class Dateint year;int month;int day;原创 2024-03-24 23:11:57 · 2858 阅读 · 138 评论 -
【c++入门】引用,内联函数,auto
当然,这里swap函数取名字也可以取x,y,原创 2024-03-23 15:15:51 · 2228 阅读 · 132 评论 -
【c++入门】命名空间,缺省参数与函数重载
这里存在的问题是,原创 2024-03-21 20:52:23 · 2763 阅读 · 155 评论
分享