
C++
文章平均质量分 93
是奈思呀
这个作者很懒,什么都没留下…
展开
-
C++ | 手把手带你从C语言到C++
命名空间的定义有关键字+命名空间名+{}组成,具体定义如下;//声明或定义(命名空间成员)int a;char c;以上代码定义了一个名叫zhangsan的命名空间,该命令空间有三个成员,分别声明了一个整型a,一个字符型c和一个函数Swap;注意:命名空间不可定义在函数和类的内部int main()int a = 0;int& ra1;// err 未初始化// 正确return 0;原创 2023-02-10 13:18:14 · 5911 阅读 · 5 评论 -
C++ | 类与对象(上)
本章话题是C++的类与对象,主要分为三部分来解释C++中类与对象中的种种细节,我们都知道,市面上的一些主流语言大部分都采用了面向对象的编程方式,以前我们学过的C语言主要是一种面向过程的编程方式。而我们的C++采取的则是面向过程与面向对象相结合的方式进行混编(主要是因为C++向下兼容C),面向对象首先必须了解类的相关知识。// 类内成员// 后面有个分号// classname 为类名int _data;原创 2023-05-27 16:48:32 · 530 阅读 · 2 评论 -
C++ | 类与对象(中)
(内置类型包含整型浮点型以及指针类型,而自定义类型主要包含struct、class定义的类与union定义的联合体 和 enum定义的枚举)7、默认构造函数指的是这三个函数,分别是。原创 2023-06-03 15:45:58 · 1116 阅读 · 2 评论 -
C++ | 类与对象(下)
前两章主要理解了类与对象的核心知识点,本章将介绍类与对象一些细微收尾的知识点;原创 2023-06-05 22:53:40 · 617 阅读 · 0 评论 -
C++ | 动态内存分配
关于malloc与new的区别1、malloc free等为函数,而new、delete为操作符2、malloc不会初始化,而new可以初始化3、malloc需要计算类型大小,new只需传数据类型4、malloc返回值需强转,new不需要5、malloc失败时返回NULL,而new是抛异常6、malloc只会申请空间,而new则还会调用构造。原创 2023-06-06 22:04:38 · 2142 阅读 · 0 评论 -
C++ | 模板
早在几千年前,古人发明了活字印刷术,而活字印刷术也与我们今天的模板类似,C++的模板大体可分为两类,分别为函数模板与类模板,在正式了解模板之前,我们首先的了解函数重载的概念,如果对函数重载不了解的,可移步中了解关于函数重载的概念后,再来学习模板相关知识;原创 2023-06-07 15:48:53 · 364 阅读 · 0 评论 -
C++ | string用法指南
本文主要介绍STL容器之一 ---- string,在学习C++的过程中,我们要将C++视为一个语言联邦(摘录于Effective C++ 条款一)。如何理解这句话呢,我们学习C++,可将其分为四个板块;分别为C、Object-Oriented C++(面向对象的C++)、Template C++(模板)、STL。本文就介绍STL中的string;原创 2023-06-29 09:29:39 · 22270 阅读 · 1 评论 -
C++ | string的模拟实现
关于容器的学习我认为不应该仅仅只是了解其用法,还要了解其底层是如何实现的,这对我们使用STL库中的容器有很大的帮助,可以帮助我们提高开发效率;原创 2023-06-29 22:58:00 · 354 阅读 · 0 评论 -
C++ | vector用法指南
关于vector,还是分为两部分来学习,首先,我们得学会vector常用接口的使用,然后我们围绕着这些接口进行一次模拟实现,深刻理解与掌握vector相关知识;本文所有资料查阅于C++文档首先我们需要看的便是构造函数了,相对于string,vector的构造函数就比较精简了;有如下四个;// 1、无参构造// 2、用n个val初始化vector// 3、迭代器区间构造// 任意合理迭代器区间都可(左闭右开)// 还可以用数组名(左闭右开)// 4、vector构造。原创 2023-07-01 09:56:43 · 1060 阅读 · 0 评论 -
C++ | vector的模拟实现
前面我们学习了如何使用vector的各种接口,为了深层次的理解掌握vector,本文模拟实现一个vector,实现vector主要的核心接口,并可以用我们实现的vector来做题(我们的标准);原创 2023-07-04 16:23:52 · 426 阅读 · 0 评论 -
C++ | list用法指南
经过前几章节的学习,我们对STL的vector和string容器接口的使用已经非常深刻了,这里我们继续学习STL中的list------也就是链表;原创 2023-07-05 16:31:35 · 651 阅读 · 0 评论 -
C++ | list的模拟实现
上篇文章我们学习使用了list的常用接口,这篇文章主要来模拟实现list;主要难点是关于list迭代器的实现;这部分内容可能具有挑战;原创 2023-07-06 21:08:09 · 365 阅读 · 0 评论 -
C++ | stack与queue
实际上,deque的使用并不多,既然deque又有vector的优点,也有list的优点,那为什么用的不多呢?实际上,deque有以下优缺点;原创 2023-07-07 23:47:21 · 201 阅读 · 0 评论 -
C++ | 仿函数与priority_queue
本文主要介绍优先级队列与仿函数,优先级队列实际上是我们在数据结构中学的堆;在介绍优先级队列之前,我们必须的初步的认识学习一下什么叫仿函数,与仿函数的使用;原创 2023-07-08 16:43:08 · 132 阅读 · 0 评论 -
C++ | 反向迭代器
反向迭代器实际上与我们前面的stack、queue、priority一样,都是适配器;我们可以通过正向迭代器构建出反向迭代器;原创 2023-07-08 22:13:05 · 603 阅读 · 0 评论 -
C++ | 模板进阶
/-----------Cal.cpp文件-----------//1 + 2;// 显示特化template这种方案的缺点也很明显,当我们还需要别的类型时,我们需要在添加一段别的类型的特丽华;(不推荐)这种方案即一开始我们实现string、vector等使用的方案;此处就不过多介绍;原创 2023-07-10 21:46:20 · 211 阅读 · 0 评论 -
C++ | 继承
在学习面向对象语言时,我们绕不开类这个概念,而我们可能都听过类的三大特性,分别为类的封装,继承与多态;封装我们在之前学习类中早已介绍,本文主要介绍类的继承这一特性;如果不了解类的封装特性,可以点击下方链接先去了解;类与对象(上)类与对象(中)类与对象(下)继承的定义如下图所示;由于继承中的作用域,如果我们的基类与派生类都存在一个同名对象;此时,派生类屏蔽了对基类同名对象直接访问的现象称为隐藏;如下代码;原创 2023-07-12 22:46:40 · 504 阅读 · 0 评论 -
C++ | 多态
我们都知道类的三大特性分别为类的封装、继承与多态;前面我们介绍过了类的封装与继承,本章主要介绍类的多态这一性质,其实类的多态这一性质基于类的继承,可以说没有类的继承也就没有类的多态;我们想构成一个多态,必须有以下条件(缺一不可);1、虚函数的重写2、必须通过基类的指针或者引用调用虚函数public:public:int main()Person p;func(p);func(stu);return 0;上述代码实现了多态,该代码仅仅只是为了让大家看看多态,下面会介绍相关概念;原创 2023-07-15 21:48:20 · 475 阅读 · 5 评论 -
C++ | 二叉搜索树
关于数据结构中的树,想必大家都不会很陌生,今天,主要给大家一起学习搜索二叉树(BST);前面,我们掌握学习过二叉树的三种遍历方式(前序,中序,后序的递归版本),以及我们实现过顺序结构的树(堆),前面的树在储存数据方面,并没有多大的意义,而今天所说的二叉搜索树在数据存储方面就有了很大的意义;原创 2023-07-20 23:40:34 · 485 阅读 · 0 评论 -
C++ | AVL树
AVL树就是我们的二叉搜索树的一个进阶版本,我们称它为平衡搜索二叉树,本文带着各位了解一下这是一颗怎么样的树;为了方便后面的插入,这里我们维护一种三叉链的关系,多了一个指向父节点的指针,当然,我们同时也必须维护这个指向父节点的指针;// 结点,_kv(kv),_bf(0){}// 平衡因子int _bf;AVL树是一种绝对平衡的二叉搜索树,其查找效率为O(log N),无论什么恶劣情况,都不会降低效率,但是由于其过于绝对,因此我们STL库中对于set与map的实现采用了另一种方案;原创 2023-07-24 01:46:27 · 283 阅读 · 0 评论 -
C++ | 红黑树以及map与set的封装
前面我们讲过普通的二叉搜索树以及特殊的二叉搜索树 --- AVL树,今天,我们也要实现一种特殊的二叉搜索树,该树被广泛使用在STL库中的map与set的封装,这就是我们的红黑树,怎么样,听名字就知道很霸气吧;本文就带着大家实现一个简单版本的红黑树以及用这个版本的红黑树对map与set进行封装;我们首先枚举出颜色,然后我们的红黑树结点用三叉链的方式进行连接,方便后续旋转调整;这里,其实有一个问题,我们构造的结点默认是红色还是黑色呢?原创 2023-07-28 20:41:30 · 584 阅读 · 0 评论 -
C++ | unordered_map与unordered_set的用法指南
unordered_map与unordered_set是C++11推出的关联式容器,他们的作用与我们前面学习的map与set差不多一样,唯一不同的是这两个容器相比于map/set数据是无序的;我们从名字也可以看出来,具体上,实际上底层map/set是用的红黑树,而unordered_map/unordered_set是使用哈希来实现的;unordered_set也是一种关联式容器,作用主要与我们前面学过的set相同,我们首先看这个类的声明;具体如下;原创 2023-07-30 22:23:51 · 2485 阅读 · 0 评论 -
C++ | 哈希表的实现与unordered_set/unordered_map的封装
前面不管是开散列还是闭散列,我们在求取hashi的时候,我们都是直接求余数的,假如我们的key是string类型呢?那不就都会报错吗?所以,此时我们必须多提供一个模板参数,也就是我们unordered_set/unordered_map第三个模板参数Hash,这个参数就是我们可以传入一个仿函数,控制如何将key转换成size_t类型;// 增加后的模板列表//增加的默认Hash函数return key;// 特化template原创 2023-08-01 23:02:47 · 693 阅读 · 0 评论 -
C++ | 位图与布隆过滤器
本文主要讲解位图及位图应用,布隆过滤器及其引用,以及我们的对于海量数据的处理,如何正确理解位图与布隆过滤器的使用场景;原创 2023-08-03 17:43:28 · 333 阅读 · 0 评论 -
C++ | C++11新特性(上)
本章主要讲解一些关于C++11常用语法;不会将每个语法都介绍一边,将主要语法进行讲解;如果想要了解全部有关C++11语法可以访问下方链接网站;原创 2023-08-07 18:46:47 · 324 阅读 · 1 评论 -
C++ | C++11新特性(下)
前面我们介绍了C++11列表初始化、新的类功能以及右值引用等新特性,本文继续介绍关于可变参数模板以及lambda表达式等新语法;原创 2023-09-28 08:28:27 · 166 阅读 · 0 评论