自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 平衡二叉树(AVLTree)的构造等——超详细

平衡二叉树概念二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当 于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1962年 发明了一种解决上述问题的方法:当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之 差的绝对值不超过1(需要对树中的结点进行调整),即可降低树的高度,从而减少平均搜索长度。一棵AVL树或者是空树,或者是具有以下性质的二叉搜索树:1.它的左右子树都是AVL

2020-07-28 12:41:55 2533 2

原创 二叉搜索树的实现超详细解说

二叉搜索树二叉搜索树是搜索树的一种,虽然效率相比于平衡二叉树以及红黑树和B+树的搜索效率低,但它是这几类搜索树的基础,所以,掌握二叉搜索树是必须的,首先,先看一下二叉排序树的样子每一个结点的左边都是小于它本身的值,右边都是大于它本身的值。这样,中序遍历一遍之后,就是一个有序数列。二叉搜索树的平均搜索效率是O(logn),当然也有最坏的情况,及单枝树,如果是单枝树搜索效率也就变成了O(n),所以,也就有了后面的平衡二叉树。结点创建结点创建如下template<class T,class K&

2020-07-27 11:42:51 212

原创 C++多态的实现原理,虚函数超级详解

多态的概念多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同 的状态。举个栗子:比如买票这个行为,当普通人买票时,是全价买票;学生买票时,是半价买票;军人买票时是优 先买票。再举个栗子: 最近为了争夺在线支付市场,支付宝年底经常会做诱人的扫红包-支付-给奖励金的活动。那么 大家想想为什么有人扫的红包又大又新鲜8块、10块…,而有人扫的红包都是1毛,5毛…。其实这背后也是 一个多态行为。支付宝首先会分析你的账户数据,比如你是新用户、比如你没有经常支付宝支付等等

2020-07-22 10:15:47 363 4

原创 C++继承,多继承,菱形继承等超详细讲解

继承概念继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构, 体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。class A{public: A(int a) :_a(a) {} void print() { cout<<"i am son"<<endl; }privat

2020-07-20 11:11:24 621

原创 C++模板进阶,模板特化详细讲解

模板进一步介绍1. 非类型模板参数这里的模板参数,及出现在参数模板列表的位置template<class T,size_t n = 10>class a{public: //[]运算符重载 T& operator[](size_t index){return _array[index];}private: T _array[n];//定义一个T类型的数组 //n可以当作常量使用};注意:浮点数、类对象以及字符串是不允许作为非类型模板参数的。非类型的模板

2020-07-09 13:49:31 420

原创 优先级队列— priority_queue详细解说以及使用

priority_queue介绍之前所说的队列,是按照给的顺序逐一入队,而这里要说的优先级队列,底层实现是通过堆来实现的,优先级队列,顾名思义,在入队的时候,就会按照数据大小拍好序来入队,在默认情况下,优先级队列的实现是通过大堆来实现的。具体的概念如下:1. 优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。2. 此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元 素)。3. 优先队列被实现为容器适配器,容器适配器即将特定

2020-07-06 10:09:56 726

原创 C++容器—队列以及队列的自我实现

队列介绍队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端 提取元素。队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的 成员函数来访问其元素。元素从队尾入队列,从队头出队列。底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类。该底层容器应至少支持以下操 作: empty:检测队列是否为空size:返回队列中有效元素的个数front:返回队头元素的引用back:返回队尾元素的引用

2020-07-06 09:27:41 670

原创 C++容器—栈使用以及最小栈

容器栈栈的介绍stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行 元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定 的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下 操作: empty:判空操作back:获取尾部元素操作push_back:尾部插入元素

2020-07-06 09:11:18 341

原创 C++list的自我实现

list实现#include <iostream>using namespace std;//List: 双向带头循环链表template < class T>struct ListNode{ T _value; ListNode<T>* _next; ListNode<T>* _prev; ListNode(const T& val = T()) :_value(val) , _next(nullptr) , _

2020-07-02 10:40:55 174

原创 C++STL的list使用详细讲解

list容器介绍list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向 其前一个元素和后一个元素。list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高 效。与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率 更好。与其他序列式容器相

2020-07-02 10:34:55 431

空空如也

空空如也

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

TA关注的人

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