c++
文章平均质量分 95
c++详解,庖丁解牛,恢恢乎游刃有余
不居一格
C/C++选手
展开
-
红黑树(超详解)
上一篇文章我们讲了AVL树,但是AVL树只是一个过渡,我们实际当中用的更多另外一颗树还是红黑树.也不能说红黑树就是AVL树的改进,它是用另外一种方式来控制.这棵树更抽象一些,下一步我们来看一下.原创 2024-01-22 20:57:38 · 879 阅读 · 31 评论 -
AVL树(超详解)
AVL树是怎么来的呢?我们知道搜索二叉树会存在退化问题,退化以后就变成单支或者接近单支。它的效率就变成O(N)了,无法保证搜索效率。无法保证搜索效率我们就必须做一件事,我们得去控制平衡。我们直接定义成key/value结构,因为能实现key/value就能实现key,并且它们本质也差不多在这里我们第一次引入三叉链,也就是除了_left,_right还有parent,没有parent也可以,但是实现起来麻烦很多。原创 2023-12-29 13:28:30 · 2688 阅读 · 87 评论 -
搜索二叉树(超详解)
普通二叉树其实意义不大,如果用二叉树存储数据的话,还不如顺序表,链表这些。搜索二叉树它的意义就很大了。左边比根小,右边比根大,子树也满足这个特征。原创 2023-12-23 01:40:42 · 1411 阅读 · 17 评论 -
二叉树进阶题目(超详解)
二叉树进阶的题目不一定更复杂,但一定更适合用C++去写。这里的题目用C语言去做会非常恶心。原创 2023-12-24 02:22:50 · 1723 阅读 · 29 评论 -
map和set
map和set学了以后会非常舒服,我们今天重点讲它的使用。map有什么用?通过一个值就可以找另外一个值我们就可以用map,经典的场景就是字典,我们中文找英文,英文找中文。还有统计次数。map非常非常重要。学习map之前得先来认识一个结构。这个结构叫做pairmap是key和value的结构,它既要存一个value也要存一个key,它是key/value的搜索树。但它里面的数据不是存key和value,它是存value的变量。pair是库里面自己定义的结构。原创 2023-12-24 23:26:23 · 2196 阅读 · 57 评论 -
C++中多态的原理
上篇讲解了多态的原理,这篇文章来详细讲解一下多态的原理。这里有一道常考笔试题:sizeof(Base)是多少?为什么不是8?可以调试带大家看一下。仔细看,对象的头部多了一个指针。这个指针叫做虚函数表指针。上面不重要,重要的是下面的东西,多态的原理。这个指针指向的表里到底有什么东西呢?原创 2023-12-22 00:38:49 · 1511 阅读 · 27 评论 -
C++中的多态
多态非常非常重要,面试的时候经常出,这块一定要认真学。我们知道继承就是复用,那什么是多态呢?多态就是多种形态。具体点就是我们要做某个动作,当不同的对象去完成时会产生出不同的结果。只要是做同样的一件事,不同的人去做,结果不一样,那就可以称为多态。在程序当中就相当于调用一个函数,不同对象去调,它就会产生不同的结果。下面我们看一下,多态是怎么玩的。我们可以在虚函数的后面加上赋值0;那这个函数就叫做纯虚函数。包含纯虚函数的类就叫做抽象类。抽象类的特点是:不能实例化出对象。原创 2023-12-21 01:11:42 · 1666 阅读 · 18 评论 -
C++中的继承(二)
上一篇文章我们C++的正常继承其实已经讲完了,但是后面还有一个大坑。实际当中继承有单继承和多继承。单继承就是直接继承一个类。只有一个直接父类的就叫做单继承。如果是单继承那就比较简单。现实世界除了有单继承还有多继承。原创 2023-12-18 23:28:08 · 3490 阅读 · 83 评论 -
C++中的继承(一)
我们之前说过,继承是面向对象的三大特性。面向对象的三大特性:封装、继承、多态。封装在类和对象体现出。原创 2023-12-17 16:49:47 · 1409 阅读 · 29 评论 -
C++模板进阶
模板进阶也没有到一些特别的东西,就是讲比较偏的一些特性。在这里我们先来讲一下反向迭代器。原创 2023-12-15 19:05:50 · 1017 阅读 · 67 评论 -
双端队列和优先级队列
今天要介绍比较特殊的结构,双端队列。还有一个适配器,优先级队列。假设我们优先级数列存储的数据不再是内置类型。自定义类型,能不能用优先级队列。也可以。大堆:小堆:日期类需要重载大于,小于才行。如果没有重载就需要写仿函数才能搞定。给大家看一下更牛逼的东西。结果每次都不一样怎么回事呢?现在存进去的T是Date*,不是Date.Date* 可以进行比较,但这不是我想要的。Date* 是new出来的,new是堆上申请的空间,那个地址可能先大先小,完全没有规律。如果我非要这样比较呢?原创 2023-12-14 15:09:10 · 471 阅读 · 17 评论 -
C++STL的stack和queue(超详解)
栈和队列这一块其实有数据结构的基础,学起来非常简单。原创 2023-12-13 15:33:01 · 579 阅读 · 18 评论 -
C++STL的list模拟实现
要实现STL的list, 首先我们还得看一下list的源码。我们看到这么一个东西,我们知道C++兼容C,可以用struct来创建一个类。但是我们习惯用class。那什么时候会用struct呢?这个类所有成员都想开放出去,比如结点的指针,它一般开放出来。所以我们用struct.。继续看源码比较重要的东西,成员变量的结构。这个东西是啥?这样就很清晰了。知道它是一个结点的指针,下一步 应该看什么?成员看了,就看接口。原创 2023-12-13 10:07:36 · 1071 阅读 · 61 评论 -
C++STL的list(超详解)
看一下list, 在任意位置可以进行O(1)插入删除的操作。它怎么实现这个东西?它其实就是一个带头双向循环链表。#成员函数。原创 2023-12-12 10:41:26 · 547 阅读 · 27 评论 -
C++STL的vector模拟实现
public:private:我们之前实现顺序表是用指向数组的的指针和数组个数和容量来维护顺序表的,这里用三个指针来实现其实大差不差。原创 2023-12-12 00:25:27 · 289 阅读 · 13 评论 -
C++STL的vector(超详解)
vector就是数组,动态增长的顺序表。它和string的区别是什么呢?一个是管理任意类型的数组,一个是管理管理字符数组。为了提高内存申请和释放的效率,它的内存都不是直接从计算机来的,它是从内存池来的。学习vector的成本其实非常低,因为我们之前学习过string,并且vector其实就是一个顺序表。原创 2023-12-09 20:50:15 · 618 阅读 · 36 评论 -
C++STL的string模拟实现
今天要讲string的底层实现,通过自己来实现string,我们对string的理解才能更加的深刻。我们对string其实既熟悉又陌生,熟悉sting其实就是字符串,陌生是在于管理字符串这样一个类。原创 2023-12-08 20:18:22 · 597 阅读 · 64 评论 -
C&C++内存管理方式
1.全局变量,static修饰的全局变量和局部变量都存放在静态区2.局部变量, 数组存放在栈区pChar3指向代码段C++增加了new和delete操作符它最主要的目的是为了处理自定义类型。return 0;注意:在申请自定义类型的空间时,new会调用构造函数,delete会调用析构函数,而malloc与free不会。原创 2023-12-05 23:31:23 · 343 阅读 · 12 评论 -
类和对象(中)
类和对象这块还是很重要的,不然后面会很麻烦。以前写栈的时候,我们是这样写的,经常忘记初始化,或者Destroy;而且Destroy可能在很多地方都要调用,写起来还很烦。init完成初始化,destory完成资源清理,如果不清理会造成内存泄漏。c++对此做了一些优化,下面带大家看一下具体是怎样优化的。return 0;1、我们不写,编译器会自动生成,我们写了,编译器就不会自动生成。默认生成构造和析构:a、内置类型不做处理。原创 2023-11-26 19:20:27 · 519 阅读 · 55 评论 -
C++STL的string(超详解)
无论c++还是c语言,字符串都是最常见的类之一。我们日常当中写的程序必然要存储数据。我们的内置类型只能表示基础的信息,无法表示一些复杂的信息,比如int, double.但我们要表示身份证、住址那就表示不了了。原创 2023-12-07 18:45:20 · 557 阅读 · 44 评论 -
C++模板初阶
上面交换的代码可以写成这样。原创 2023-12-06 16:02:22 · 407 阅读 · 17 评论 -
类和对象(下)
这句话很绕,慢慢往下看。原创 2023-12-04 23:49:19 · 157 阅读 · 10 评论 -
类和对象(前)
类和对象,这是学习c++非常重要的一个章节。在学习的时候,前篇还算游刃有余,中篇最难,下篇轻舟已过万重山。用c++简单写一个栈,主要是为了看类和结构体的区别,具体怎么实现不重要。struct Stack//结构体的定义,在C++中更喜欢用class来代替。// 成员函数void Init(int n = 4)//设定缺省参数perror("malloc申请空间失败\n");return;size = 0;//...// 成员变量int* a;int size;原创 2023-11-20 19:35:23 · 380 阅读 · 55 评论