
c++
文章平均质量分 92
懒懒学c
一个自学编程的爱好者
展开
-
c++的学习之路:28、哈希表
本章主要是说一下哈希的实现目录摘要一、哈希表1、哈希概念2、闭散列1、节点创建2、插入3、查找4、删除5、测试3、开散列1、创建2、插入3、查找4、删除5、析构函数二、map三、set四、位图与布隆过滤器五、代码test.cppHashTable副本.h。原创 2024-04-27 19:41:42 · 2380 阅读 · 7 评论 -
Linux的学习之路:18、进程间通信(2)
本章主要是说一下命名管道和共享内存目录摘要一、命名管道1、创建一个命名管道2、匿名管道与命名管道的区别3、命名管道的打开规则4、代码实现二、system V共享内存1、共享内存2、共享内存函数三、代码四、思维导图。原创 2024-04-22 21:31:51 · 977 阅读 · 1 评论 -
c++的学习之路:27、红黑树+map+set
如下方代码就是利用三叉链进行维护树的,每个节点都是有一个pair以及一个col也就是颜色,如下方代码中的枚举。Clour _col;RBTreeNode(const pair& kv)//创建节点、三叉链, _kv(kv), _col(RED)//颜色记录{}enum Clour //红黑树定义一个枚举列表来标记yanseRED,BLACK,原创 2024-04-22 19:03:11 · 1317 阅读 · 0 评论 -
c++的学习之路:26、AVL树
本章主要是说一下AVL树的实现,这里说的是插入的底层原理目录摘要一、原理二、四种旋转1、左单旋2、右单旋3、左右双旋4、右左双旋三、代码实现1、节点创建2、插入3、旋转4、判断是否平衡5、测试四、代码。原创 2024-04-20 21:08:14 · 964 阅读 · 1 评论 -
c++的学习之路:25、map与set
下方图片是cplusplus的介绍。翻译过来的意思就是下方六点1. map是关联容器,它按照特定的次序(按照key来比较)存储由键值key和值value组合而成的元素。2. 在map中,键值key通常用于排序和惟一地标识元素,而值value中存储与此键值key关联的内容。键值key和值value的类型可能不同,并且在map的内部,key与value通过成员类型value_type绑定在一起,为其取别名称为pair:typedef pair value_type;原创 2024-04-18 13:06:24 · 1460 阅读 · 3 评论 -
c++的学习之路:24、 二叉搜索树概念
本章主要是讲一下二叉搜索树的实现目录摘要一、二叉搜索树概念二、 二叉搜索树操作1、二叉搜索树的查找2、二叉搜索树的插入3、二叉搜索树的删除三、二叉搜索树的实现1、插入2、中序遍历3、删除4、查找四、二叉搜索树的递归实现1、插入2、删除3、查找五、代码test.cBSTree.h六、思维导图。原创 2024-04-17 20:02:09 · 926 阅读 · 9 评论 -
c++的学习之路:23、多态(2)
多态的抽象类、原理以及虚表。目录摘要一、抽象类1、 概念2、接口继承和实现继承二、多态的原理1、虚函数表2、动态绑定与静态绑定三、单继承和多继承关系的虚函数表1、单继承中的虚函数表2、多继承中的虚函数表四、思维导图。原创 2024-04-13 21:15:55 · 1018 阅读 · 4 评论 -
c++的学习之路:22、多态(1)
本章主要是说一些多态的开头。目录摘要一、多态的概念二、多态的定义及实现2.1、多态的构成条件2.2、虚函数2.3、虚函数的重写2.4、C++11 override 和 final2.5、重载、覆盖(重写)、隐藏(重定义)的对比多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person。Person对象买票全价,Student对象买票半价。那么在继承中要构成多态还有两个条件:1. 必须通过基类的指针或者引用调用虚函数。原创 2024-04-10 22:41:05 · 1161 阅读 · 6 评论 -
C++的学习之路:21、继承(2)
本文主要是说一下菱形继承和虚继承。目录摘要一、菱形继承二、虚继承三、继承的总结和反思四、导图1. 很多人说C++语法复杂,其实多继承就是一个体现。有了多继承,就存在菱形继承,有了菱形继承就有菱形虚拟继承,底层实现就很复杂。所以一般不建议设计出多继承,一定不要设计出菱形继承。否则在复杂度及性能上都有问题。2. 多继承可以认为是C++的缺陷之一,很多后来的OO语言都没有多继承,如Java。3. 继承和组合public继承是一种is-a的关系。也就是说每个派生类对象都是一个基类对象。原创 2024-04-10 21:51:50 · 997 阅读 · 1 评论 -
c++的学习之路:20、继承(1)
本章主要是讲以一下继承的一些概念以及使用方法等等。目录摘要一、继承的概念及定义1、继承的概念2、继承定义1.2.1、定义格式1.2.2、继承关系和访问限定符1.2.3、继承基类成员访问方式的变化3、总结二、基类和派生类对象赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员七、代码八、思维导图继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象。原创 2024-04-09 22:19:16 · 757 阅读 · 4 评论 -
c++的学习之路:19、模板
本章主要是说了一些模板,如非类型模板参数、类模板的特化等等,文章末附上测试代码与导图目录摘要一、非类型模板参数二、类模板的特化1、概念2、函数模板特化3、类模板特化三、模板的分离编译1、什么是分离编译2、模板的分离编译四、模板总结1、优点2、缺点五、代码1、test.cpp2、Date.h3、Date.cpp六、导图一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。原创 2024-04-09 20:36:27 · 1237 阅读 · 12 评论 -
c++的学习之路:18、容器适配器与反向迭代器
本文有可能讲的不是特别清楚,我也是初学者有的理解可能有偏差欢迎指出,文章末附上导图。目录摘要一、什么是适配器二、STL标准库中stack和queue的底层结构三、deque1、deque的原理介绍2、deque的缺陷四、反向迭代器五、思维导图适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。原创 2024-04-08 22:41:35 · 780 阅读 · 10 评论 -
c++的学习之路:17、stack、queue与priority_queue
本文主要是介绍一下stack、queue、priority_queue的使用以及模拟实现,文章末附上代码以及思维导图。目录摘要一、stack的介绍和使用1、stack的介绍2、stack的使用3、stack的模拟实现二、queue的介绍和使用1、queue的介绍2、queue的使用3、queue的模拟实现三、priority_queue的介绍和使用1、priority_queue的介绍2、priority_queue的使用3、priority_queue的模拟实现四、代码1、stack2、queue。原创 2024-04-08 21:53:27 · 1080 阅读 · 4 评论 -
c++的学习之路:16、list(3)
上章有一些东西当时没学到,这里学到了将在补充,文章末附上代码,思维导图。原创 2024-04-07 20:40:28 · 1072 阅读 · 8 评论 -
c++的学习之路:15、list(2)
本章主要是讲模拟实现list,文章末附上代码。原创 2024-04-07 20:03:25 · 991 阅读 · 1 评论 -
c++的学习之路:14、list(1)
首先还是看一看官方文档的介绍如下图,如下方五点:1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向 其前一个元素和后一个元素。3. list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高 效。原创 2024-04-06 19:27:47 · 1598 阅读 · 5 评论 -
c++的学习之路:13、vector(2)
本章主要是模拟实现vector,文章末附上代码,和源码。原创 2024-04-06 17:53:38 · 982 阅读 · 1 评论 -
c++的学习之路:12、vector(1)
下图是cplusplus的简介,上面一共有六点,如下:1、vector是表示可变大小数组的序列容器2、就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。3、本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。原创 2024-04-05 18:49:50 · 818 阅读 · 5 评论 -
c++的学习之路:11、string(3)
昨天写string的时候没有说全,这里就开始接着讲。原创 2024-04-05 17:22:20 · 679 阅读 · 4 评论 -
c++的学习之路:10、string(2)
本章主要说一下模拟实现string类的部分功能,文章末附上所有代码。原创 2024-04-04 20:23:51 · 1524 阅读 · 8 评论 -
c++的学习之路:9、STL简介与string(1)
STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。也就是说STL就是一个模板,这个模板就是整合了很多库让我们方便使用的。原创 2024-04-03 11:46:24 · 1004 阅读 · 8 评论 -
c++的学习之路:8、内存管理与模板
首先在c语言的动态内存管理中我知道了代码是如何存储数据的,然后c++是根据c语言底层变化来的,那么c语言的内存管理就是适用c++的内存管理,在c语言中程序是分为几个部分存储,例如在栈堆等等,他们的分布如下图就是一个分布,有点抽象。1、栈又叫堆栈--非静态局部变量/函数参数/返回值等等,栈是向下增长的。2、 内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存,做进程间通信。(Linux课程如果没学到这块,现在只需要了解一下)原创 2024-04-02 23:20:17 · 1136 阅读 · 8 评论 -
c++的学习之路:7、类和对象(3)
初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式,如下方代码就是初始化列表的方式。从图片可以看出这种方式也可以利用缺省初始化。int _month;int _day;return 0;注意:1. 每个成员变量在初始化列表中只能出现一次(初始化只能初始化一次)原创 2024-04-02 13:53:31 · 832 阅读 · 0 评论 -
c++的学习之路:6、类和对象(2)
如果一个类什么成员都没有,那么他是一个空类吗?在c++的创建时,就规定了在类没有成员时,也会有六个默认的成员,简称6个默认成员函数,如下图所示先介绍一下构造函数,这里就利用代码的演示来解释,这里是利用日期类来介绍的,如下代码就是正常的初始化,利用Init函数进行的初始化。对于这个日期类来说每次都利用Init去初始化会显得很麻烦,这时c++的创造着就提出了一个函数叫做构造函数,这个函数主要就是在创建这个类的时候就进行初始化。原创 2024-04-01 16:51:10 · 1087 阅读 · 2 评论 -
c++的学习之路:5、类和对象(1)
C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。比如:之前在数据结构初阶中,用C语言方式实现的栈,结构体中只能定义变量;现在以C++方式实现,会发现struct中也可以定义函数,如下方代码所示,可以看出利用c语言创造结构体的方式可以在struct里面写一个函数,这就是一个类,但是c++兼容c所以可以这样写,但是c++一般喜欢利用class来表示这个类。return 0;原创 2024-03-27 20:39:09 · 899 阅读 · 1 评论 -
c++的学习之路:4、入门(3)
这个关键字是c++提出的,可以自动识别变量的类型,可以看出下方图片,auto自动识别变量类型,a是指针就识别出了指针,a就是指针类型的,b和a一样,但是在auto后面接上*就只可以是指针类型的,同理接上&后就只能是引用了,但是要注意这个关键字后面需要有初始化的变量,不能作为函数的形参和初始化数组。原创 2024-04-15 15:53:10 · 353 阅读 · 2 评论 -
c++的学习之路:3、入门(2)
1、引用的概念引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。怎么说呢,简单点理解就是你的小名,家里人叫你小名,你就不是你了?显然不是,这个就是引用的概念,在变成过程中,引用的用法就是如下方图片就是最简单的引用表示,我先定义一个变量a然后给a取别名为b然后这里是把他们的地址都打印出来了,然后发现他们的地址都是一个,这样就能最简单的证明了引用就是取别名,就是共同访问同一个地址。那么能否给b接着取别名呢?原创 2024-03-23 20:25:38 · 1079 阅读 · 0 评论 -
c++的学习之路:2、入门(1)
c++的关键字要比c语言要多31个足足有63个,这里我只是了解了下每个有啥作用,具体使用方法以及更多的知识将在后续学习中,慢慢扩展使用,下方表格就是c++的63个关键字。原创 2024-03-21 21:45:48 · 1024 阅读 · 2 评论 -
c++的学习之路:1、学习前言
C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。原创 2024-03-21 19:28:20 · 334 阅读 · 0 评论