自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C++】图解AVL树

_kv(kv), _bf(0){}// 该节点的左孩子// 该节点的右孩子// 该节点的双亲int _bf;

2024-06-29 12:20:18 1059

原创 【C++】二叉搜索树

问题:如果退化成单支树,二叉搜索树的性能就失去了。那能否进行改进,不论按照什么次序插入关键码,二叉搜索树的性能都能达到最优?那么我们后续学习的AVL树和红黑树就可以上场了。插入和删除操作都必须先查找,查找效率代表了二叉搜索树中各个操作的性能。除此之外,空树也是一颗二叉搜索树。

2024-06-24 16:59:46 801 1

原创 继承和多态常见的面试问题

A: 继承D: 动态绑定C:优先使用继承,而不是组合,是面向对象设计的第二原则A:声明纯虚函数的类不能实例化对象B:内联函数不能是虚函数D:一个类的不同对象共享该类的虚表D:A类和B类虚表中虚函数个数相同,但A类和B类使用的不是同一张虚表C:p1 == p3!= p2D:p1!= p2!= p3A: A->0B: B->1C: A->1  D: B->0  E: 编译出错  F: 以上都不正确。

2024-06-24 11:31:53 814

原创 【C++】有关多态

在我们上一篇文章《有关继承》里面,我们提到了面向对象三大特性之一的继承,接下来我们来讲第二个特性——多态。需要声明的是,本文中的代码都是在VS2022下的x86程序中,涉及的指针都是4bytes。必须通过基类的指针或者引用调用虚函数被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写虚函数:被virtual修饰的类成员函数称为虚函数public:virtual void BuyTicket() { cout << "买票-全价" << endl;

2024-06-21 18:30:33 1215

原创 【C++】有关继承

继承是面向对象编程(OOP)的三大特性之一,通过它可以在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。类成员/继承方式public继承protected继承private继承基类的public成员派生类的public成员派生类的protected成员派生类的private成员基类的protected成员派生类的protected成员。

2024-06-05 21:20:27 1239

原创 【C++】有关模板

【优点】模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生增强了代码的灵活性【缺点】模板会导致代码膨胀问题,也会导致编译时间变长出现模板编译错误时,错误信息非常凌乱,不易定位错误。

2024-06-04 18:45:46 890

原创 【C++ STL】优先级队列(priority_queue)详解

是一种队列,其中每个元素都被赋予一个优先级。在优先级队列中,元素以优先级顺序出队,而不是按插入顺序出队。也就是说,优先级最高的元素最先出队。的声明在<queue>中。从上可以看到,和stackqueue都是容器适配器,且的底层默认容器是vector。的第三个模板参数是一个仿函数。在C++中,仿函数是一种类,它重载了函数调用运算符operator(),从而使得它的对象可以像函数一样被调用。除此之外,仿函数还可以携带状态(即成员变量),这使得它比普通的函数指针更为灵活。

2024-05-30 17:55:07 1009

原创 【C++ STL】详解栈(stack)、队列(queue)的使用和模拟

栈(stack)又称堆栈,是一种被限定仅在表尾进行插入和删除操作的线性表。对于栈来说,能进行插入和删除操作的一段称为栈顶(top),另一端称为栈底(bottom),且栈的修改操作是按照“后进先出”(Last In First Out, LIFO)的原则进行的。栈的示意图如下所示:与vector和list不同的是,stack是一种容器适配器。有了栈的介绍后,队列就很好理解了。它只允许在队尾插入队头删除,即“先进先出”

2024-05-27 23:02:29 1718

原创 【C++ STL】list容器的简单模拟实现

在vector容器的简单模拟实现中,我们构造了一个简单的vector容器,那相比于其它的容器,vector有哪些优势呢?vector的元素是连续存储的,所以vector的遍历速度非常快。访问下一个元素,不需要利用指针间接寻址,这使得vector元素的线性扫描(find()和copy())接近最优。vector支持简单且高效的随机访问,这使得vector上的很多算法(如sort()和)非常高效。vector在oj题目里有一个比较常用的用法:二维数组。

2024-05-23 00:05:44 1187

原创 【C++ STL】vector容器的简单模拟实现

vector是最常用的标准库容器。一个vector就是一个给定类型元素的序列,元素在内存中是连续存储的:vector的大小是可以动态改变的,而且它的大小会被容器自动处理。与其它动态序列容器相比(deque, list and forward_list), vector在访问元素的时候更加高效。它可以采用下标对元素进行访问,因此在末尾添加和删除元素相对高效,对于其它不在末尾的删除和插入操作,效率更低。构造函数声明接口说明vector()无参构造构造并初始化n个val拷贝构造。

2024-05-13 00:50:25 900

原创 详解C++中的string类

的C++工具,它将数据表示和操纵数据的方法组合成一个整洁的包。一般来说,类规范由两个部分组成。

2024-05-02 15:29:36 113

空空如也

空空如也

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

TA关注的人

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