
C++
文章平均质量分 86
本专栏仅供参考、学习
WGzZsyu
感谢你的关注
展开
-
搜索二叉树
二叉搜索树"迎着风,向前奔走,越过瓦砾~"对于vector、list而言,虽然对外提供了find() or search() 接口,但前者无非是在容器元素内部进行逐一比较,最坏的情况下需要运行O(n)的时间复杂度。我们也可以对该容器内的无序元素按照一定规则排序,通过二分查找的方式以确保查找搜寻的效率在O(logN)。不过,但一旦向量本身需要修改,无论是插入还是删除,在最坏情况下每次仍需O(n)时间。总之,如果想要以上面的容器,满足我们对高效率动态修改、高效率静态查找的需求是做不到的!原创 2024-04-15 20:34:44 · 1160 阅读 · 0 评论 -
C++附加篇: 空间适配器
STL的六大组件,容器、算法、迭代器、适配器、仿函数,最后一个也就是"空间适配器"。 所谓"空间适配器",顾名思义,就是对STL中各个容器的内存进行高效的管理。也许你会说,诶,我写了这么多的C++代码,为什么没有这个概念呢?或者说,为什么我们根本没有见到!这个空间适配器呢? 然而事实上,不是说,我们没有使用,而是在我们使用诸如vector\list\deque时,我们的空间配置器是在默默地为我们进行工作。原创 2023-04-19 15:52:35 · 592 阅读 · 0 评论 -
C++:C++11 和 设计模式
C++11简介"不如握紧拳头,这就是我的所有"前言:C++11简介(一)C++11特性与语法(1)列表初始化C++11对于 {} 初始化值赋予新的用法:①内置类型+结构体。原创 2022-08-12 21:19:56 · 1135 阅读 · 5 评论 -
C++11:异常和智能指针
通常做项目的时候,会统一进行抛异常的管理。否则,各个人有各个人抛异常的习惯,这样管理的成本大大增加,效率也变得低下。原创 2022-08-11 01:20:09 · 473 阅读 · 0 评论 -
C++:unordered_map/unordered_set
准确来说unordered系列关联式容器,是在C++11出来的。因为在C++98中引入了以红黑树为底层的map/set,但是当树的高度足够高,节点足够多时,查询的效率是不理想的。unordered_multimap和unordered_multiset和multimap/multiset异曲同工。因为其底层本身就是实现的是单链表。unorderd系列底层封装的哈希结构;"只有我,守着安静的沙漠。(一)unorderd系列容器;(一)unorderd系列容器;本篇就到此为止,谢谢你的阅读。...原创 2022-07-30 14:55:13 · 574 阅读 · 0 评论 -
C++:哈希表和哈希桶
开散列;又称链表地址法每个关键码地址下,会链接多个节点。形似挂桶一样。所以也叫哈希桶。各链表的头节点,会存放在关键码地址中。原创 2022-07-30 11:55:18 · 616 阅读 · 0 评论 -
C++:map和set容器
1)set;"我们都无可奈何地选择了,自己的人生。也无可奈何地出演自己拿到的剧本"(1)set;①set是什么?set是一种管理数据的容器,其底层是由红黑树来实现的。1.set是按照一定序列存储的容器;2.set中的元素(value)是唯一的;3.......与set相对的就是multiset很显然,这个容器可以存放相同的数.①map介绍map也是一种关联式容器。和set不同的地方是,map会多一个修饰key的参数value。...原创 2022-07-28 00:27:45 · 196 阅读 · 1 评论 -
C++数据结构(下):模拟实现红黑树
1)红黑树;"除开隐忍当下,与展望未来。我们别无他法"(1)红黑树;红黑树的概念和它名字一样。其本质就是一颗二叉树。但在每个节点增加一存储颜色(enum)。核心确保最长路径不超过最短路径的两倍!②红黑树的性质相对于概念,红黑树的性质是重中之重!1.每个节点不是红色就是黑色(这相当屁话).2.根节点(root)一定是黑色.3.不会存在连续的红色节点.4.每条路径的黑色节点相同.只有保证上述四点,才能保证红黑树的一条根本性质最长路径不超过最短路径的两倍!...原创 2022-07-27 21:26:01 · 321 阅读 · 0 评论 -
C++数据结构(上):模拟实现AVL
1)AVL树"我们无法一直活在过去,亦如我们从未能挽救死亡"平衡搜索二叉树。性质①根节点的左右子树是AVL树②左右子树的高度的差不超过1③比根节点大的插在根节点的右边。小的在左边。(2)AVL树模拟实现关于AVL树概念上的东西,多讲无用。我们现在直接来实现。①结构框架注这里实现的是key值版。对于AVL树而言,显然难点在插入的部分。所以这留到最后讲。那么这部分进行相关功能的实现。关于如何理解检查这棵树是否平衡的函数,也就不多赘述。因为在前面二叉树篇讲过。...原创 2022-07-27 18:42:37 · 367 阅读 · 2 评论 -
C++:搜索二叉树模拟以及二叉树OJ
如若它的左子树不为空,那么左子树所有的节点小于根节点。如若它的右子树不为空,那么右子树所有的节点大于根节点。②搜索二叉树查找。原创 2022-07-23 17:06:42 · 320 阅读 · 0 评论 -
C++多态(下):虚函数进阶 与 虚表
1)抽象类纯虚函数----------------"没有人在乎你的过程,但我在乎"(1)抽象类纯虚函数值得注意,包含纯虚函数的类不能实例化出对象,当然继承这样类的子类,也不能实例化出对象,除非派生类重写。①纯虚函数语法。......原创 2022-07-20 00:00:00 · 312 阅读 · 0 评论 -
C++多态(上):
我们知道,编译器会把基类、派生类的析构函数统一改成,destructor(),从而隐藏,但在这里也就误打误撞构成也就完成了重写。这样的理由在于,析构时,让父类构成虚函数(virtual)后,子类也就继承virtual的属性,让子类也对函数进行了重写。从而,让虚函数进行重写了。2.override检查派生类虚函数是否重写了基类某个虚函数,如果没有重写编译报错。虚函数即被virtual修饰的函数(这和虚继承的关键字一样,但意义不一样!--------------"感谢在那每一次跌倒了以后,又重新来过".....原创 2022-07-19 12:44:00 · 319 阅读 · 0 评论 -
C++:继承
---------------"我离孤单几公里"原创 2022-07-18 18:40:21 · 264 阅读 · 0 评论 -
C++:IO流
对于printf而言,输出终止的条件为‘\0’,但对于cout而言,输出终止的条件为size().IO指的就是,C语言(scanf,printf)或者C++(cin,cout)中的输入与输出。c++中的流,是一种形容,从输入设备到内存,从内存再到输出设备的一种比喻。C中我们常常用这样的方式,那如何使用cin达到多组输入呢?cin\coutprintf\scanf串的打印。(键盘),读取数据(我们敲击的字母、符号……输出到标准输入设备(显示器)。1.能够屏蔽低级IO流的实现。...原创 2022-07-15 18:33:59 · 209 阅读 · 0 评论 -
C++:栈与队列
1)栈与队列的功能---------------"你不会因为懒惰而悔恨"(1)栈与队列的功能①实现关于STL库中,栈和队列的功能和当初用C实现栈和队列的功能相似。其中,最值得注意的,就是红色标记处------容器。我们知道,不管是栈、队列它的底层,既可以用顺序表、也可以用链表来实现。同一类型,不同容器。②访问不同于list\vector,它们拥有自己的迭代器,支持访问。队列和栈都不支持随机访问。我们知道,栈的原则是FILO(先进后出,后进先出)。下面是测试。...原创 2022-07-15 15:25:47 · 850 阅读 · 0 评论 -
list:list的介绍和模拟实现
-----------"别问可不可以,只说愿不愿意"1.list可以在常数范围内,对任意位置进行插入、删除数据。2.list底层是双向循环链表。3.list相对于(vector\string)插入数据,简单高效4.但list不支持随机访问。 大部分功能已经介绍了,也就在此打住吧。 list基本框架: 对list迭代器的铺设框架完善好了,简单地进行插入下。 我们先尾插几个数字;迭代器也可以正常使用。 此时我们封装一个打印list内容的函数,此时出现报错,其现在原因可能出在用了非co原创 2022-07-11 13:18:40 · 307 阅读 · 0 评论 -
vector的使用和模拟实现:
--------------血雨腥风,是对行远人的痛快的激励原创 2022-07-06 16:46:13 · 200 阅读 · 0 评论 -
C++(string):串的使用和模拟实现
-----“人生的上半场打不好没关系,还有下半场”这篇博客主要针对C++ STL中串(string)的功能使用,以及其中重要功能的模拟实现。C语言中,string就是字符串,是以'\0'结尾的一些字符的集合。但字符串本身和库函数是分离,需要用户去底层管理字符串,对于"马大哈"的用户容易越界访问。 rsize 和 reserve:resize:reserve: 结论:单从结果上来看resize 与 reserve的差别在于,扩容后,是否增加新的字符(初始化)。1.用数组的方式[].在string库原创 2022-06-29 18:15:02 · 603 阅读 · 0 评论 -
C++(后续):初始化列表和static
上篇是C++类和对象最为重要的部分。这篇仅仅作为上篇的补充,难度也相应小点。为什么会引用初始化列表呢?我们是否只 需要构造函数就能全部让类的变量初始化?如果我们想要对一个 没有(初始化)构造函数的类进行,初始化该怎么做?如果我们想把引用和const这类必须先要初始化的 归到这个类里呢?以冒号开始,以逗号分隔。且,初始化列表的初始化顺序,按照声明的顺序(2)C++中的隐式类型转换: 用aa3 = 2。这里面隐含着 隐式类型转换。 但编译器会直接优化成:A aa3(2) -----> 直接就原创 2022-06-21 14:08:00 · 199 阅读 · 0 评论 -
C++(下):类和对象——默认成员函数
上篇主要呢,主要是给类和对象开了个小头。这篇主讲的就是类的六大默认成员函数。关于构造函数,其实就是对一个类的值,进行初始化。在之前,对日期类进行初始化的时候,都得调用InitDate。这样会很麻烦,因为有时候,可能自己会忘记初始化。所以,那能否在对象创建时,就将信息设置进去呢? 所以C++引入了这个默认成员函数构造函数的虽然名称叫构造,但是需要注意的是构造函数的主要任务并不是开空间创建对象,而是初始化对象。其特征如下: 注意:如果通过无参构造函数创建对象时,对象后面不用跟括号,否则就成了函原创 2022-06-21 12:07:49 · 333 阅读 · 1 评论 -
C++(上): 类和对象的初识
“我知道攀登高峰的崎岖变得越难越难走”————————《西门少年》在C++的学习中,掌握类和对象,是打开Cpp学习的敲门砖。我们知道,在C中可以用结构体 struct 定义一个多种类型的集合:那么在C++中我们也继承了C的传统,另外在struct中,除了定义变量,还可以定义函数。因为这里为了区别,c++中 更喜欢用class 来 替代struct。形如struct,class 和struct类似.根据上图,可以确定一个 类的元素是由,成员变量、成员函数构成。在上面代码的展示里面,都是类定义原创 2022-06-21 09:02:49 · 142 阅读 · 1 评论