![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 94
C++相关文章
朱程
在路上
展开
-
【C++】C++11(万能模版、完美转发,可变参数模版,lambda表达式,包装器function+bind绑定)
定义了一个可以调用的对象 / 匿名函数,一般定义在局部,特点是可以深度绑定了局部的数据。lambda表达式,实际上是一个匿名函数,实际上是在定义一个函数(局部的函数)lambda表达式通常是用来定义小函数lambda表达式在局部是很好用的,最特别的就是捕捉列表Add叫lambda表达式的对象 – lambda定义的是一个对象。lambda表达式书写格式:lambda表达式各部分说明:捕捉列表,该列表总是出现在lambda函数的开始位置,编译器根据[]来判断接下来的代码是否为lambda函数。原创 2023-10-07 17:38:14 · 940 阅读 · 0 评论 -
【C++】C++11(列表初始化和右值引用)
传统的C++语法中就有引用的语法,而C++11中新增了的右值引用语法特性,所以从现在开始我们之前学习的引用就叫做左值引用。无论左值引用还是右值引用,都是给对象取别名。原创 2023-09-20 21:07:35 · 246 阅读 · 0 评论 -
【C++】哈希思想的应用——位图、布隆过滤器和哈希切割
位图是直接映射,也不存在哈希冲突,空间消耗几乎没有,并且快,直接是O(1),但是位图只是适合于整形的查找,并不适用于。我们知道,比特位是最小的存储单位,我们的数据类型最小是char,1个字节,占有8个比特位,我们还是存储最小的数据类型比较好,这样便于后面的数据映射。b. 映射冲突到这个编号文件的ip太多 - 但是冲突的太多的话,还是会大量文件存在小文件中,依旧会存在一个小文件太大的情况。其实修改位置的数据和我们惯性思维是有出入的,他对于每一个char类型存的比特位对应的值是从右向左。原创 2023-09-13 18:25:16 · 196 阅读 · 0 评论 -
【C++】封装map和set(红黑树实现)
这里由于set和map存放的结点一个是Key一个是pair<Key,Value>,所以我们使用模版,把存放的结点泛化。原创 2023-09-09 11:13:15 · 306 阅读 · 0 评论 -
【C++】详解AVL树并模拟实现
直接实现key_value的结构 – 三叉链的形式(带父节点)图示如下其中:_bf-----balance factor,代表平衡因子右子树与左子树的高度差(2)AVL树部分功能的实现1、查找从根开始比较,查找,比根大则往右边走查找,比根小则往左边走查找。最多查找高度次,走到到空,还没找到,这个值不存在。原创 2023-09-07 17:10:15 · 575 阅读 · 0 评论 -
【C++】继承---上(继承的引入及使用详解、切片赋值和作用域)
概念:继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。继承的定义格式:上面我们看到Person是父类,也称作基类。Student(Teacher)是子类,也称作派生类。原创 2023-04-12 19:57:41 · 696 阅读 · 0 评论 -
【C++】STL之stack、queue的使用和模拟实现+优先级队列(附仿函数)+容器适配器详解
stack文档stack文档1. stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。2. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。3. stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下操作:empty:判空操作back:获取尾部元素操作。原创 2023-04-09 14:08:00 · 615 阅读 · 0 评论 -
【C++】详解二叉树进阶OJ题(更深入理解递归和非递归在二叉树的各种结构的应用)
我们在此前的初阶数据结构讲解中已经讲解了部分二叉树的OJ题,当时我们只学习了C语言,其实还有很多进阶的OJ题用C++来写会比较方便和容易理解,所以本章将在讲解完二叉搜索树后来详解不同类型的二叉树进阶OJ题,校招中涉及也比较多哦!原创 2023-05-05 14:29:18 · 260 阅读 · 0 评论 -
【C++】map和set的介绍+使用
使用 set 容器,必须引入该头文件#include < set >set的使用文档T: set中存放元素的类型,实际在底层存储的键值对。Compareset中元素默认按照小于来比较Allocset中元素空间的管理方式,使用STL提供的空间配置器管理介绍:1. set是按照一定次序存储元素的容器2. 在set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的。set中的元素不能在容器中修改(元素总是const)原创 2023-05-06 19:58:03 · 674 阅读 · 1 评论 -
【C++】类和对象(上)(详解类和对象概念,构造函数,拷贝构造函数,析构函数)
比如:之前在数据结构初阶中,如用。原创 2023-03-19 15:52:17 · 199 阅读 · 0 评论 -
【C++】模板进阶(非类型模板参数、类模板的特化和模板的分离编译)
【C++】模板进阶(非类型模板参数、类模板的特化和模板的分离编译)原创 2023-04-10 21:20:48 · 471 阅读 · 0 评论 -
【C++】内存管理+模板
本章将详细讲解C++内存管理和模板的实现。第一部分我们讲解C++内存管理,C语言中有malloc/calloc/realloc等开辟空间和free释放空间,那么C++将符合实现呢?第二部分我们会一起来初步认识模板与泛型编程,并详细探讨函数模板和类模板,为后续的学习做准备。原创 2023-03-29 20:50:59 · 360 阅读 · 0 评论 -
【C++】反向迭代器的模拟实现
前面几篇文章我们在模拟实现string,vector和list时都只模拟实现了迭代器,并未单独实现反向迭代器,其实作者在这里是留了一点小心思的。原创 2023-04-08 19:15:58 · 373 阅读 · 0 评论 -
【C++】C++入门(引入C++学习并介绍缺省参数,函数重载,引用,内联函数,auto关键字,nullptr等入门知识)
C语言我们会用NULL对指针初始化,NULL实际是一个宏,在传统的C头文件(stddef.h)中,可以看到如下代码:可以看到,NULL可能被定义为字面常量0,或者被定义为无类型指针(void*)的常量。f(NULL);return 0;程序本意是想通过f(NULL)调用指针版本的f(int*)函数,但是由于NULL被定义成0,因此与程序的 初衷相悖。c++有bug,会把NULL翻译成0,认成常数。原创 2023-03-14 21:32:20 · 100 阅读 · 0 评论 -
【C++】多态---上( 概念、条件及性质)
(一)多态的概念(二)多态的定义和实现(1)多态的构成条件1、虚函数2、虚函数的重写(覆盖)3、多态的条件(重点)(2)虚函数重写的两个例外1、协变(基类与派生类虚函数返回值类型不同)2、析构函数的重写(基类与派生类析构函数的名字不同)(三)C++11---两个关键字之override和final(1)final的用法(2)override的用法(四)重载、覆盖(重写)、隐藏(重定义)的对比(五)抽象类的概念+使用(1)概念(2)接口继承和实现继原创 2023-04-15 18:22:11 · 401 阅读 · 0 评论 -
【C++】类和对象(下)(详解运算符重载,初始化列表,static成员,友元,内部类,匿名对象以及编译器对拷贝对象时的一些优化等)
C++为了增强代码的可读性引入了运算符重载运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似。函数名字为:关键字operator后面接需要重载的运算符符号。返回值类型 operator操作符(参数列表)。注意:不能通过连接其他符号来创建新的操作符:比如operator@重载操作符必须有一个类类型参数用于内置类型的运算符,其含义不能改变,例如:内置的整型+,不能改变其含义。原创 2023-03-20 20:51:58 · 219 阅读 · 1 评论 -
【C++】STL之string的使用和模拟实现
标准模板库是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。原始版本:Meng Lee在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原始版本一样做开源使用。HP 版本--所有STL实现版本的始祖。P. J.由开发,继承自HP版本,被采用,不能公开或修改,缺陷:可读性比较低,符号命名比较怪异。RW由Rouge Wage公司开发,继承自。原创 2023-04-02 11:28:58 · 353 阅读 · 0 评论 -
【C++】多态---下(多态的原理)
多态是父类指针指向父类对象就调用父类的虚函数,指向子类的对象就去调用子类的虚函数。所以到底要去调用哪个函数不是按照指针的类型定的,而是去到指向的对象中去查表。指向谁就在谁的虚表中找虚函数对应的地址 – 这是多态ps:同一个类型都是指向一张表的,同一个类型的不同对象它们的虚表都是一样的。(重点)原创 2023-04-16 20:36:45 · 338 阅读 · 0 评论 -
【C++】STL之list的使用和模拟实现
1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。3. list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。4. 与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好。原创 2023-04-07 15:38:21 · 382 阅读 · 0 评论 -
【C++】继承---下(子类默认成员函数、虚继承对象模型的详解等)
上篇文章我们一起初步了解了继承的概念和使用,本章我们回家新一步深入探讨继承更深层次的内容。前文回顾——>原创 2023-04-14 17:17:31 · 435 阅读 · 0 评论 -
【C++】STL之vector的使用和模拟实现
1. vector是表示可变大小数组的序列容器。2. 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。3. 本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小,为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。原创 2023-04-05 13:43:07 · 388 阅读 · 0 评论 -
【C++】二叉搜索树(概念、实现、应用)
在分块讲解前,我们要明白,递归要传根节点,但是用户平常使用这些借口并不会传根节点,而是直接调用,所以我们嵌套一层,这样就可以满足双方的需求了。可以在递归的参数中多一个父亲结点,每次递归都更新一下Parent,然后再带到下一层递归。由于没有二叉搜索树的官方库,我们增删查改的实现需要我们自己来完成,见下面的模拟实现。递归这种思想我么你还需要多加理解,下一章将详细讲解OJ题目,加深我们对于递归的理解!采用递归方式的缺点就是如果数的结点个数足够多的时候,就会有爆栈的风险!当出现单边树的情况时,就是〇(N)的情况。原创 2023-04-24 10:58:12 · 426 阅读 · 0 评论