C++
文章平均质量分 67
蓝海萤
这个作者很懒,什么都没留下…
展开
-
AVL树概念及简单实现
为什么会有AVL树?极端情况下的二叉搜索树效率是O(n),如果调整二叉树搜索树的高度,那么树的搜索效率会达到O(log n).( 这里简单介绍一下二叉搜索树:当前结点大于它的左子树结点,小于右子树的结点,中序遍历是按照升序进行排列的。并且树中没有相同的结点: 二叉搜索树的实现.)AVL树即平衡树,在二叉搜索树的前提下增加了平衡因子,使得每个结点的左右高度差不超过1.平衡因子=右子树的高度-左子树的高度AVL树的插入:AVL的插入和二叉搜索树一样的方法,只不过需要更新平衡因子。1.如果在左原创 2021-01-31 00:38:33 · 220 阅读 · 0 评论 -
二叉搜索树
二叉搜索树(排序二叉树)的概念若左子树不为空,则左子树所有结点的值都小于根结点的值若右子树不为空,则右子树所有结点的值都小于根节点的值左右子树也分别是二叉搜索树二叉搜索树的最优情况:log 以2为底的N (log2N)二叉树的最坏情况:N/2;二叉树的模拟实现template<class T>//二叉搜索树的结构struct BSTNode{ T _val; BSTNode<T>* left; BSTNode <T>* right; BSTN原创 2020-08-08 00:03:33 · 199 阅读 · 0 评论 -
多态及其原理
这里写目录标题什么是多态构成多态的条件重载、重写、重定义虚函数C++11 override 和 final抽象类多态的实现原理什么是多态多态就是多种形态,完成某个行为,不同的对象调用会产生不同的形态。构成多态的条件1.必须通过对象的指针或者引用调用虚函数2.被调用的函数必须是虚函数,子类的虚函数必须重写父类的虚函数重载、重写、重定义重载:相同作用域下,函数名相同,参数列表不同(参数的个数,顺序,类型)重写(覆盖):派生类有和基类相同的虚函数,(函数名相同,参数列表相同,返回值相同)(协变例外)原创 2020-08-07 12:46:59 · 1678 阅读 · 0 评论 -
string的现代简单写法
只需要拷贝和赋值#include <iostream>using namespace std;namespace lhy{ class string { public: string (const char*str=""):_str(new char[strlen(str)+1]) { strcpy(_str,str); } ~string() { delete[]_str; _str=nullptr; } /* 传统写法 /原创 2020-08-04 17:52:16 · 225 阅读 · 0 评论 -
C++复习(二)
这里写目录标题C++中struct和class的区别this指针构造函数析构函数拷贝构造赋值运算符主要有四点:const成员函数初始化列表static成员链接:C++复习(一).C++中struct和class的区别C++需要兼容C语言,所以C++中struct可以当成结构体去使用。另外C++中struct还可以用来定义类。和class是定义类是一样的,区别是struct的成员默认访问方式是public,class是struct的成员默认访问方式是private。一个类的大小就是成员变量占用空间之和原创 2020-08-03 19:11:21 · 361 阅读 · 0 评论 -
C++复习(一)
这里写目录标题缺省参数命名空间C++为什么支持函数重载extern "C"引用指针和引用的区别inline宏的优缺点?inline与宏比较autoauto不能推导的场景缺省参数缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。分为全缺省和半缺省规则:半缺省参数必须从右往左依次来给出,不能间隔着给缺省参数不能在函数声明和定义中同时出现(如果生命与定义位置同时出现,恰巧两个位置提供的值不同,那编译器就无法确定到底该用那个缺省值原创 2020-08-03 18:57:34 · 381 阅读 · 0 评论 -
C++继承
这里写目录标题继承的概念和定义概念继承关系和访问限定符基类和派生类对象复制转换继承中的作用域派生类的默认成员函数菱形继承和菱形虚拟继承继承和组合继承的概念和定义概念继承机制是面向对象程序设计使代码可用复用的最重要手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,产生新的派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。继承是类设计层次的复用继承关系和访问限定符继承的方式有:public继承,protected继承,private继承访问限定符:public访原创 2020-06-02 22:50:32 · 368 阅读 · 0 评论 -
vector的深度剖析及模拟实现
vectorvector的介绍reserve和resizevector的模拟实现vector的介绍vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector是表示可以改变大小的序列容器可以像数组一样使用。采用连续的存储空间存储元素,支持元素的随机访问,但是又不像数组,可以动态自动扩容。(vs下1.5倍增容,g++下2倍增容)vector使用动态分配数组存储它的元素,当新插入一个元素时,如果空间不够,则会分配一个新的数组,将全部元素移动到原创 2020-05-21 22:34:13 · 287 阅读 · 0 评论 -
C++函数重载
函数重载的概念为什么要重载函数重载的调用匹配编译器如何解析重载函数的调用原创 2020-03-07 22:13:38 · 222 阅读 · 0 评论 -
C++命名空间
什么是命名空间命名空间是ANSIC++引入的可以由用户命名的作用域。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染。它可作为附加信息来区分不同库中相同名称的函数、类、变量等。使用了命名空间即定义了上下文。本质上,命名空间就是定义了一个范围。有了命名空间的概念,标识符就被限制在特定的范围呢,不会引起命名冲突。最典型的例子就是std命名空间,C++标准库中所有标识符都包含在...原创 2020-03-06 00:13:08 · 416 阅读 · 0 评论