C++——从入门到入土,安排!
文章平均质量分 95
以实践出真知
花果山~程序猿
勇气是自由的序章,热爱是生活的答案。
展开
-
C++特殊类设计【特殊类 || 单例对象 || 饿汉模式 || 懒汉模式】
设计模式,我们学过的有适配器,迭代器,包装器,以及扩展:工厂,观察者模式。下面的单例模式也是。原创 2024-03-10 14:01:52 · 948 阅读 · 8 评论 -
智能指针基础知识【C++】【RAII思想 || unique_ptr || shared_ptr&weak_ptr || 循环引用问题】
内存泄漏非常常见,解决方案分为两种:1、事前预防型,如。原创 2024-03-08 18:50:00 · 1173 阅读 · 10 评论 -
C++11常用知识(下)【可变参数模板 || lambda表达式 || 包装器】
目录一,可变参数模板1. 递归方法展开参数包2. 逗号表达式展开参数包3,可变参数模板优势二,lambda表达式1. lambda表达式语法2. 注意点三,包装器1. bind(了解)由于可变模版参数比较抽象,使用起来需要一定的技巧,所以这块还是比较晦涩的。现阶段呢,我们掌握一些基础的可变参数模板特性。上面的参数args前面有省略号,所以它就是一个可变模版参数,我们把带省略号的参数称为“参数包”,它里面包含了0到N(N>=0)个模版参数。我们无法直接获取参数包args中的每个参数的,只能通过展开参数包的方式原创 2024-03-04 20:41:16 · 1114 阅读 · 16 评论 -
C++11常用知识(上)【列表初始化 || 简化声明 || 范围for || 左右值 】
目录一. 列表初始化1)用法2) initializer_list小节: 二,简化声明1) ,auto2) ,decltype类3),nullptr三,范围for四,C++11后,STL容器变化五,左值与右值1. 左值2. 右值3,左值与右值之间的比较4. 右值引用使用场景(1,将死右值的移动语义操作 (2. 编译器传值返回优化(3,将亡值做参数(4. 完美转发 5,默认成员函数(1. 默认成员函数的强制生成(2. 默认成员函数的禁止调用生成首先,我们需要区分的是,什么是初始化列表与列表初始化。 前者是在类原创 2024-03-04 20:41:02 · 929 阅读 · 8 评论 -
用哈希表封装unordered_map(以及unordered_set)【C++】
在学习封装unordered_map与unordered_set前,建议先学习如何封装map & set该篇文章用红黑树封装map&set【C++】-CSDN博客这样更能理解其中的封装思想(两种封装方式,主题思路大体相似)同时用哈希表封装 unordered_map和undordered_set,在封装之前,我们首先是要学会哈希表基本的精华,哈希实现建议大家先学习从底层认识哈希表【C++】-CSDN博客。原创 2023-11-16 16:10:18 · 257 阅读 · 20 评论 -
从底层认识哈希表【C++】
在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到$log_2N$,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。原创 2023-11-16 16:09:34 · 314 阅读 · 28 评论 -
用红黑树封装map&set【C++】
根据STL源代码的提示,我们能初步形成框架class mappublic:class setpublic:T _data;color _col;// 颜色:_data(p),_col(RED) //与其修改黑色路径数量,不如违反红子孩子都为黑的原则来的轻松。{}....原创 2023-11-02 21:46:30 · 291 阅读 · 16 评论 -
红黑树——插入底层实现【C++】面试重灾区!!
AVL树是一棵绝对平衡的二叉搜索树,其要求每个节点的左右子树高度差的绝对值都不超过1,这样可以保证查询时高效的时间复杂度,即$log_2 (N)$。但是如果要对AVL树做一些结构修改的操作,性能非常低下,比如:插入时要维护其绝对平衡,旋转的次数比较多,更差的是在删除时,有可能一直要让旋转持续到根的位置。因此:如果需要一种查询高效且有序的数据结构,而且数据的个数为静态的(即不会改变),可以考虑AVL树,但一个结构经常修改,就不太适合。原创 2023-11-02 21:46:59 · 280 阅读 · 31 评论 -
保姆级认识AVL树【C++】(三种insert情况 || 四种旋转方法)
其底层都是按照二叉搜索树来实现的,但是二叉搜索树有其自身的缺陷,假如往树中插入的元素有序或者接近有序,二叉搜索树就会退化成单支树,时间复杂度会退化成O(N),因此map、set等关联式容器的底层结构是对二叉树进行了平衡处理,即采用平衡树来实现。搜索二叉树【C++】搜索二叉树底层实现_花果山~程序猿的博客-CSDN博客为方便循序渐进的学习,这里只放最出初始的树结点定义。public::_kv(p){}上面定义在后面会进行完善修改。。原创 2024-03-10 16:42:38 · 986 阅读 · 1 评论 -
map & set 使用快速上手【C++】
key: 键值对中key的类型T: 键值对中value的类型Compare: 比较器的类型,map中的元素是按照key来比较的,缺省情况下按照小于来比较,一般情况下(内置类型元素)该参数不需要传递,如果无法比较时(自定义类型),需要用户自己显式传递比较规则(一般情况下按照函数指针或者仿函数来传递)Alloc:通过空间配置器来申请底层空间,不需要用户传递,除非用户不想使用标准库提供的空间配置器。m1.insert(make_pair("string", "字符串"));原创 2023-10-23 19:26:06 · 112 阅读 · 14 评论 -
搜索二叉树底层实现【C++】
本文用C++讲解搜索二叉树的特点及实现,实现包括对——删除函数的精讲,插入,拷贝构造等等原创 2023-09-18 16:33:14 · 885 阅读 · 48 评论 -
多态基础认识【C++】【虚函数 || 多态面试题 || 多态原理 || 多继承多态】
考试,笔试必考。本节建议重点学习原创 2023-09-14 15:11:24 · 243 阅读 · 51 评论 -
【C++】继承基础知识一遍过
下面我们看到Person是父类,也称作基类。Student是子类,也称作派生类很多人说C++语法复杂,其实多继承就是一个体现。有了多继承,就存在菱形继承,有了菱形继承就有菱形虚拟继承,底层实现就很复杂。所以一般不建议设计出多继承,一定不要设计出菱形继承。否则在复杂度及性能上都有问题。多继承可以认为是C++的缺陷之一,很多后来的OO语言都没有多继承,如Java。1. 继承允许你根据基类的实现来定义派生类的实现。这种通过生成派生类的复用通常被称为白箱复用(white-box reuse)。原创 2023-09-09 13:30:05 · 515 阅读 · 12 评论 -
【C++】模板进阶(非类型模板,模板特化,分离编译)
在前面文章的基础上,对模板进行深入了解原创 2023-09-06 20:10:48 · 372 阅读 · 36 评论 -
【C++】反向迭代器精讲(以list为例)
反向迭代器是一种特殊类型的迭代器,它允许我们按照与正向迭代相反的顺序遍历一个序列或容器中的元素。三,设计思路 设计思路比较简单,本质上是复用普通迭代器的函数,其他重载函数思想跟普通函数差不多。但这里也有一个比较艺术性的设计:那这里我们来讨论一下,这个反向迭代器是否能给vector使用?? 答案是肯定的看图:那是不是所有的容器都合适呢? 不一定,因为容器的普通迭代器最起码要原创 2023-09-05 16:27:42 · 664 阅读 · 1 评论 -
【C++_STL】优先级队列&反向迭代器详解
适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。原创 2023-08-09 22:18:00 · 508 阅读 · 42 评论 -
【C++_STL】list用法&底层实现
1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。3. list与非常相似:最主要的不同在于是单链表,只能朝前迭代,已让其更简单高效。4.与其他的序列式容器相比(arrayvectordeque)list通常在任意位置进行插入、移除元素的执行效率更好。5.与其他序列式容器相比,list和。原创 2023-07-23 13:46:51 · 658 阅读 · 46 评论 -
【C++_STL】 vector 模拟实现详解
看似简单的实现,实则“坑”点遍布。原创 2023-07-15 20:24:11 · 579 阅读 · 65 评论 -
【C++_STL】vector快速上手
快速上手STL中vector容器原创 2023-07-06 08:33:53 · 512 阅读 · 43 评论 -
【C++_STL】 string类使用一站式攻略
【STL】常见string类使用示例,轻松入门!原创 2023-06-12 20:04:10 · 1087 阅读 · 49 评论 -
【C++】是内存管理,但C++ !! && 模板初阶
详解:区别于C的C++内存管理 和 初阶模板知识原创 2023-06-08 16:15:58 · 913 阅读 · 34 评论 -
详解C++类和对象(下篇)——用代码实践功能
图文并茂地详解初始化列表,static成员,友元函数,拷贝优化。原创 2023-05-14 20:05:07 · 590 阅读 · 52 评论 -
【入土级】详解C++类&对象(中篇)
C++类和对象详解(中篇),包含类中6的特殊函数,相信能给大家带来一些收获,快进来看看吧。原创 2023-05-12 09:25:13 · 643 阅读 · 55 评论 -
详解C++类&对象(上篇),带你走进C++
C++中类超详细讲解,进来就会有收获哦!原创 2023-05-06 16:08:15 · 918 阅读 · 50 评论 -
C++基础知识快速入门
区别于C语言的C++基础知识入门原创 2023-05-03 20:19:16 · 919 阅读 · 32 评论