
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
继承是面向对象程序设计中实现代码复用的最重要的手段。它不是在函数层面复用(比如写一个通用函数到处调用),而是在类的设计层面进行复用。我们可以在保持原有类特性的基础上,通过继承来扩展新类,增加新的成员变量和成员函数。新产生的类叫做派生类,也叫子类;被继承的类叫做基类,也叫父类。这种叫法源于翻译习惯,我们后面会混用这些称呼。class 派生类名 : 继承方式 基类名 {// 派生类新增的成员 };

多态”这个词,字面上就是“多种形态现实中这种例子很多:同样是“买票”这件事,普通人买是全价,学生可能打五折,军人则享受优先服务。同样是“动物叫”,猫发出“喵喵”,狗发出“汪汪”。不同对象对同一个消息给出不同的响应,这就是多态。编译时多态(静态多态):在编译阶段就确定调用哪个函数。典型代表是函数重载和函数模板。你传一个int,编译器匹配f(int);传一个double,匹配f(double)。这个过

二叉搜索树(Binary Search Tree,BST),也叫二叉排序树,是一种特殊的二叉树。它要么是空树,要么必须满足以下所有如果左子树不为空,那么左子树上所有节点的值都小于根节点的值。如果右子树不为空,那么右子树上所有节点的值都大于根节点的值。它的左右子树本身也必须是二叉搜索树。任何一个节点,左边全比我小,右边全比我大。有些 二叉搜索树不支持插入重复值(如 C++ 的 set / map),

今天的内容到这里就结束了,希望你能有所收获~干货整理到手抖,觉得有用的话,赏个三连回回血?

在聊 AVL 树之前,我们先回顾一下普通的二叉搜索树(BST)。二叉搜索树规定:对于任意一个节点,其左子树所有节点的值都比它小,右子树所有节点的值都比它大。这个特性使得查找一个值的时间复杂度在理想情况下是O(log N)。但二叉搜索树有一个致命的缺陷:如果插入的数据本身就是有序的,比如依次插入,那么这棵树会退化成一根“链表”。此时查找效率骤降为O(N),完全丧失了树形结构的优势!AVL 树正是为了

今天的内容到这里就结束了,希望你能有所收获~干货整理到手抖,觉得有用的话,赏个三连回回血?

因为之前已经详细讲解过 map和set 所以本文对一些重复度较高的部分就没有过多赘述,有需要的小伙伴可以看看博主往期的文章。꜀(˘꒳˘ ꜀)【C++ STL篇(八)】set容器——零基础入门与核心用法精讲【C++ STL篇(九)】map容器——零基础入门与核心用法精讲【C++ STL篇(十二)】红黑树の影分身:一棵树如何同时化身 map 和 set(万字拆解+源码)今天的内容到这里就结束了,希望你

今天的内容到这里就结束了,希望你能有所收获~干货整理到手抖,觉得有用的话,赏个三连回回血?

为了让讲解更加清晰,我们先把需要用到的Dateclass Datepublic:private:int _year;int _month;int _day;这个类很简单:一个三参数构造函数(每个参数都有默认值),一个拷贝构造函数,并且它们都会在调用时输出信息,方便我们追踪构造过程。这行代码是如何工作的?编译器看到,会尝试用这三个值去构造一个Date对象。先被用来构造一个Date类型的临时对象,也就

typename T或class TT代表一个类型。T* _a;int _top;// ...但在某些场景下,我们希望在编译期就确定一些数值,比如数组的大小, 此时就可以使用非类型模板参数,它传递的是一个常量值,而不是类型。看下面的代码 (用整数常量作为栈的大小)template<size_t N> // N 是一个非类型模板参数private:int _a[N];int _top;int mai








