![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 93
jokr_q
这个作者很懒,什么都没留下…
展开
-
【C++ —— 认识哈希和unordered_set、unordered_map的介绍及模拟】
哈希冲突(Hash Collision)是指两个或多个不同的键通过哈希函数映射到同一个位置。当哈希表发生冲突时,需要使用某种机制来解决冲突,确保所有键值对能够正确存储和查找。哈希函数的定义哈希函数(Hash Function)是将键值转换为哈希值的函数。哈希值用于确定键值在哈希表中的存储位置。一个好的哈希函数能均匀分布键,减少冲突,提高哈希表的性能。原创 2024-07-28 23:04:42 · 714 阅读 · 0 评论 -
【C++ —— 用一棵红黑树同时封装出map和set】
{}// 各种操作符重载模板参数T:表示树节点存储的数据类型。Ref:引用类型,用于 operator* 的返回类型。Ptr:指针类型,用于 operator-> 的返回类型。成员变量:_node:当前迭代器指向的节点。原创 2024-07-27 23:27:07 · 546 阅读 · 0 评论 -
【C++ —— 红黑树】
红黑树是一种自平衡二叉搜索树,它在插入和删除操作后,仍能保持树的平衡,从而保证了在最坏情况下,基本动态集合操作的时间复杂度为OlognO(log n)Ologn。这种高效性使得红黑树在许多应用中得到了广泛使用,例如C++的标准模板库(STL)中的map和set。RED,BLACK, _kv(kv){}这里通过枚举常量来控制红黑树每个节点的颜色。原创 2024-07-21 17:19:10 · 848 阅读 · 0 评论 -
【C++ —— AVL树】
int _bf;//存储当前节点的平衡因子//构造函数,_kv(kv),_bf(0){}这里使用了pair来存储节点的值,_bf表示改节点的平衡因子。原创 2024-07-19 19:47:29 · 977 阅读 · 0 评论 -
【STL详解 —— map和set的使用】
set是按照一定次序存储元素的容器。默认情况下,std::set 使用 std::less 作为比较函数,这意味着它会使用小于运算符(原创 2024-07-17 23:01:11 · 1034 阅读 · 0 评论 -
【C++ —— 多态】
必须通过基类的指针或者引用调用虚函数被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写在虚函数的后面写上= 0,则这个函数为纯虚函数。包含纯虚函数的类叫做抽象类(也叫接口类),抽象类不能实例化出对象。派生类继承后也不能实例化出对象,只有重写纯虚函数,派生类才能实例化出对象。纯虚函数规范了派生类必须重写,另外纯虚函数更体现出了接口继承。class Car //包含纯虚函数所以叫抽象类public:virtual void Drive() = 0 //纯虚函数{}原创 2024-05-02 22:46:12 · 900 阅读 · 1 评论 -
【C++ 继承】
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。public:protected:// 姓名// 年龄// 继承后父类的Person的成员(成员函数+成员变量)都会变成子类的一部分。这里体现出了。原创 2024-04-28 17:24:25 · 998 阅读 · 0 评论 -
【C++模板详解 —— 函数模板与类模板】
C++模板 ——— 函数模板和类模板原创 2024-04-18 20:30:05 · 953 阅读 · 4 评论 -
【STL详解 —— priority_queue的使用与模拟实现】
priority_queue模拟原创 2024-04-16 21:05:13 · 1264 阅读 · 0 评论 -
【STL详解 —— stack和queue的模拟实现】
stack与queue的模拟原创 2024-04-16 20:14:52 · 558 阅读 · 0 评论 -
【STL详解 —— stack和queue的介绍及使用】
首先先介绍一下容器适配器。容器适配器是一种设计模式,用于在现有容器的基础上提供新的接口或修改现有接口,以满足特定的需求或者提供特定的功能。在C++中,容器适配器通常是通过组合一个已有的容器来实现的。在C++标准库中,容器适配器是通过模板类来实现的,它们提供了特定的接口,使得用户可以方便地使用已有的容器来实现不同的数据结构或算法。常见的容器适配器包括:stack(栈):提供了后进先出(LIFO)的数据结构,只允许在栈顶进行插入和删除操作。原创 2024-04-14 21:24:03 · 1053 阅读 · 1 评论 -
【STL详解 —— list的模拟实现】
如果 ListNode 的 _data 成员是内置类型(如 int, double, char 等),或者是一些简单的、不需要特殊资源管理的自定义类型(例如不涉及动态内存管理的类),那么编译器生成的默认析构函数足以正确清理 ListNode 对象。对于拷贝构造函数,我们先申请一个头结点,并让其前驱指针和后继指针都指向自己,然后将所给容器当中的数据,通过遍历的方式一个个尾插到新构造的容器后面即可。这样的封装提供了清晰的职责分离,并模仿了 STL 的设计哲学,每个类都具有特定的功能和目的。原创 2024-04-14 16:36:18 · 949 阅读 · 0 评论 -
【STL详解 —— list的介绍及使用】
list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好。原创 2024-04-13 22:43:02 · 753 阅读 · 0 评论 -
【C++STL详解 —— vector的模拟实现】
start_finish和。这些成员变量共同管理着vector的存储空间和元素。_start:指向数组开始的指针,也就是vector中第一个元素的位置。_finish:指向数组中最后一个有效元素之后的位置,这个位置是新元素插入的地方。:指向分配的内存空间结束的位置之后的那个位置。这个位置标记了vector可以在不重新分配内存的情况下扩展到的最远位置。:从start到end_of_storage的区域是vector当前分配的整个内存空间,它决定了vector能够容纳的最大元素数量(容量)。原创 2024-04-04 17:57:55 · 817 阅读 · 0 评论 -
【C++STL详解 —— vector的介绍及使用】
在C++中,vector是一个非常重要和常用的容器类型,它是标准模板库(Standard Template Library, STL)的一部分。简单来说,vector是一个能够存储任意类型元素的动态数组,其大小可以在运行时自动扩展或缩减。与普通数组不同,vector可以根据需要动态地增加或减少元素,而不需要程序员手动管理内存。vector是一个模板类,意味着它可以用来存储任意类型的对象。例如,vector用于存储整数,vector用于存储字符串。vector自动管理其存储的元素的内存。原创 2024-04-04 14:44:48 · 1097 阅读 · 0 评论 -
【C++STL详解 —— string类的模拟实现】
【代码】【C++STL详解 —— string类的模拟实现】原创 2024-03-09 12:11:57 · 433 阅读 · 1 评论 -
【C++STL详解 —— string类】
string s();//构造一个空字符串//复制s所指向的字符序列//复制s所指向的字符序列的前n个字符//生成n个c字符的字符串//生成str的复制//复制str中字符位置pos开始并且跨越len个字符的部分。原创 2024-03-06 20:36:31 · 1538 阅读 · 10 评论 -
【C++ 模板初阶】
class 类模板名// 类内成员定义下面来实现一个模板Vector,并且在内里定义的函数如果要在内外定义,需要加模板参数列表。public:,_size(0)//使用析构函数,在类内声明,内外定义~Vector();除此之外,类模板不支持分离编译,即声明在xxx.h文件中,而定义却在xxx.cpp文件中。原创 2024-02-27 19:17:47 · 973 阅读 · 1 评论 -
【C/C++内存管理详解】
new的原理调用operator new函数申请空间在申请的空间上执行构造函数,完成对象的构造delete的原理在空间上执行析构函数,完成对象中资源的清理工作调用operator delete函数释放对象的空间new T[N]的原理调用operator new[]函数,在operator new[]中实际调用operator new函数完成N个对象空间的申请在申请的空间上执行N次构造函数delete[]的原理在释放的对象空间上执行N次析构函数,完成N个对象中资源的清理。原创 2024-02-15 17:44:29 · 1066 阅读 · 3 评论 -
【C++类与对象(下)】
关键字explicit来修饰构造函数。原创 2024-02-10 13:03:52 · 974 阅读 · 0 评论 -
【C++类与对象(中)】
首先我们先了解一下:在C++中,数据类型可以分为。原创 2024-01-30 16:06:26 · 828 阅读 · 0 评论 -
【C++类与对象(上)】
首先来观察一下类的结构// 类体:由成员函数和成员变量组成 };// 一定要注意后面的分号class为定义类的关键字className为类的名字{ } 中为类的主体注意:类定义结束时后面的分号;不能省略类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。类声明放在.h文件中成员函数定义放在.cpp文件中,注意:成员函数名前需要加类名.// 我们看看这个函数,是不是会产生歧义。原创 2024-01-27 17:02:02 · 910 阅读 · 0 评论 -
【C++入门基础】
C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了:面向对象)思想,支持面向对象的程序设计语言应运而生。1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。C++是基于C语言而产生的,它既可以进行C语言的过程化程序设计,又可以进行。原创 2024-01-26 16:36:10 · 792 阅读 · 6 评论