Cpp
文章平均质量分 96
桀桀桀桀桀桀
专注于C/C++,后续会逐渐更新相关的文章,还会有数据结构/Linux系统等文章。
展开
-
Hash表(C++)
本篇将会开始介绍有关于 unordered_map 和 unordered_set 的底层原理,其中底层实现其实就是我们的 Hash 表,本篇将会讲解两种 Hash 表,其中一种为开放定址法,另一种为 hash 桶,在unordered_map 和 unordered_set 的底层实现中主要是使用的是 hash 桶。 本篇分别介绍了 hash 表的两种实现方法,接着讲解 hash 冲突、扩容与 hash 函数的设计原则。最后使用代码实现 hash 表的数据结构。原创 2024-07-13 16:22:50 · 726 阅读 · 0 评论 -
红黑树/红黑树迭代器封装(C++)
本篇将会较为全面的讲解有关红黑树的特点,插入操作,然后使用代码模拟实现红黑树,同时还会封装出红黑树的迭代器。 在 STL 库中的 set 和 map 都是使用红黑树封装的,在前文中我们讲解了 AVL树,对于红黑树和 AVL 树来说,这两种树都是效率很高的搜索二叉树,但是相对而言 AVL 树会更加接近平衡二叉树,但是用于封装 set 和 map 的却是红黑树,这是因为虽然红黑树不是很接近平衡二叉树,但是和 AVL 树的搜索效率相比较其实相差不是很多,相反而言,对于红黑树在插入时原创 2024-06-10 09:24:23 · 1412 阅读 · 0 评论 -
AVL树 ---(C++)
本篇讲全面的讲解 AVL 树的插入,旋转以及验证 AVL 树的性能(本篇未实现删除代码)。至于为什么会有 AVL 树,这是因为简单的二叉搜索树并不能直接的保证搜索的效率,因为当我们在二叉搜索树中插入一段有序的序列的时候,二叉搜索树就会退化为单枝树,这个时候进行搜索的时候,时间复杂度就变为了 O(n^2),原创 2024-06-10 09:23:30 · 1430 阅读 · 0 评论 -
map和set
在本篇中,我们将要介绍两个常用的 STL 库中的两个数据结构,set 和 map,这两个函数的底层都是由红黑树实现的。本篇不会实现其底层原理,本篇只会将其其中的要点和使用时应该注意的地方。然后还会介绍关于 set 和 map 的两个扩展容器:multiset 和 multimap。原创 2024-06-03 09:49:58 · 1639 阅读 · 0 评论 -
二叉搜索树BST ——(C++)
本篇将会讲解有关二叉树的搜索原理,以及关于二叉搜索树的建立,以及二叉树搜索树的插入、删除和查找等基本操作。最后我们还会对二叉搜索树进行功能扩展,介绍有关搜索二叉树的 K 模型和 KV 模型。原创 2024-05-27 14:06:00 · 1259 阅读 · 0 评论 -
继承 —— 对象的三大特性之一(C++)
在C++中关于对象的三大特性,封装,继承和多态,本篇将要开始对继承进行详细的讲解与解析其中的难点。不过我们首先也将对封装进行总结。然后介绍了继承的概念定义、赋值转换、派生类中的默认成员函数还介绍了菱形继承的底层解决方式,最后分析了组合和继承这两种复用关系的选择原创 2024-05-20 12:44:23 · 1877 阅读 · 0 评论 -
template——模板进阶(C++)
在之前的文章中,介绍了模板初阶:Cpp_桀桀桀桀桀桀的博客-CSDN博客 在本篇中将会对模板进一步的讲解。本篇中的主要内容为:非类型模板参数、函数模板的特化、类模板的特化(其中包含全特化和偏特化),最后讲解了模板的分离编译问题,以及出现链接错误的原因。原创 2024-05-13 08:54:54 · 1412 阅读 · 0 评论 -
stack&queue类——适配器模式 && 双端队列deque(C++)
接下来我们将实现 stack、queue 类的常用函数,其实对于 stack 和 queue 的常用函数实现可以说得上是非常简单,若想详细了解可以看这篇:栈和队列&循环队列(C/C++)_栈和循环队列-CSDN博客;在本篇中我们将使用容器适配器来实现栈和队列。原创 2024-05-06 08:49:03 · 1745 阅读 · 2 评论 -
priority_queue类(仿函数实现C++)
本篇将讲解 priority_queue 的实现,叫做优先级队列,是包含在 头文件中的一种数据结构,虽然他叫做队列,但是该数据结构并不服从先进先出的特点,而是和我们的堆很相似。本篇中将多出一个仿函数的调用。原创 2024-04-29 14:11:05 · 1580 阅读 · 0 评论 -
list类——常用函数模拟
本篇将对 list 类的常用函数进行模拟。其中主要要点为函数的模拟,另外还会对函数的功能和返回值进行讲解。但 list 可以说是 string vector stack queue …… STL 库中最难实现一个类,因为 list 的迭代器不是很好实现,所以本篇一个很重要的一个点便是 list 的迭代器。不仅仅实现了 list 的迭代器,还实现了 list 中常用的函数。原创 2024-04-22 14:16:30 · 1379 阅读 · 0 评论 -
vector类——常用函数模拟(C++)
在上一篇中我们介绍了 string 类的常用函数模拟,接下来我们将开始讲解 vector 类的常用函数的讲解以及模拟实现,相较于 string 来说,vector 的函数不那么冗余,用法也没有那么多,但是在 vector 中的函数使用和模拟中,也存在很多的细节,我们将在以下一一讲解。 我们将按照迭代器、容量、获取元素、修改、默认成员函数的顺序讲解和实现函数,在实现函数的时候,详细了给出实现该函数需要注意的事项。最后谈了谈迭代器失效的情况,给出了使用迭代器的使用注意事项。原创 2024-04-17 22:22:19 · 1810 阅读 · 2 评论 -
string类——常用函数模拟(C++)
本篇中,将会详细的介绍 Cpp 中 string 的使用,以及 string 类常用函数的模拟实现。对于 string 的内置函数来说,存在很多很冗余的用法,很多函数都有很多种用法,本篇将会讲解常用内置函数的常用用法,模拟函数的时候,也只是模拟常用的用法代码。本篇实现的 string ,仅仅只是通过一种很简单的方式实现的,对于 vs 、g++ 下的 string 相比都是小巫见大巫。原创 2024-04-15 21:53:08 · 1838 阅读 · 1 评论 -
template—模板初阶(C++)
本篇将会对 Cpp 中的模板进行一个简单的介绍,其中包括模板的使用:函数模板、类模板,以及对于泛型编程的理解。其中的重点为函数模板,介绍了函数模板的原理、隐式实例化和显示实例化、还有模板参数的匹配规则。原创 2024-04-09 11:03:54 · 1400 阅读 · 2 评论 -
内存管理new and delete(C++)
在本篇中,将会较为详细的介绍在 Cpp 中的两个新操作符 new 和 delete,将会介绍其中的底层原理,以及这两个操作符的使用方法。其中还介绍了 new/delete 操作符使用的细节,还扩展了一些有关定位 new 表达式的知识点。最后总结了 malloc/free 与 new/delete 的区别。原创 2024-04-08 21:10:24 · 1764 阅读 · 0 评论 -
类和对象(下)--- 初始化列表、explicit、友元、static、匿名对象和内部类
本篇将会对类和对象的主要知识收尾,先会对构造函数进行补充,分别补充了构造函数体赋值、初始化列表、explicit 关键字,然后介绍static 成员知识以及友元、内部类还有匿名对象等知识点原创 2024-04-01 13:16:13 · 1201 阅读 · 0 评论 -
类和对象(中)---构造、析构、拷贝构造、赋值重载、取地址重载
注:显示定义的意思为,由我们自己定义的。但是这个由编译器默认生成的构造函数,也。原创 2024-03-25 14:06:36 · 1670 阅读 · 0 评论 -
类于对象(上)--- 类的定义、访问限定符、计算类和对象的大小、this指针
在本篇中将会介绍一个很重要和很基础的Cpp知识——类和对象。对于类和对象的篇目将会有三篇,本篇是基础篇,将会介绍类的定义、类的访问限定符符和封装、计算类和对象的大小、以及类的 this 指针。原创 2024-03-22 22:57:55 · 1772 阅读 · 2 评论 -
初见Cpp(C++)
从本篇开始,往后将开始更新C++有关的文章,本篇作为对C++的一个铺垫。将会较为详细的讲解一些有关C++的基本知识,便于读者从C语言阶段晋升到C++阶段。以下是对C++的一些介绍: C++是在C的基础上,容纳进去了面对对象的编程思想,并且增加了许多有用的库,以及编程范式等等。熟悉C语言之后,对C++学习有一定的帮助。所以本篇的主要目标为: 1.补充C语言语法的不足,以及C++是如何对C语言设计不合理的地方进行优化的;2.为后序类和对象的的文章打下基础。原创 2024-03-18 13:57:19 · 1833 阅读 · 0 评论