C++Learning
文章平均质量分 91
记录C++文章的点点滴滴
Arthur___Cui
思维、交流、认真
展开
-
C++解决大学课设所有管理系统(增删查改)
(**以通讯录管理系统为例)**,如果你的课设跟以上要求**某某管理系统**类似的话,也是要求增删查改的话,那么恭喜你刷到此文章。因为所有的大学课设管理系统的套路都是基本一致的。本篇作者将以在**实际公司内实际实习考核**为参考给大家介绍一份相对规范的管理系统。原创 2024-04-10 10:48:32 · 1198 阅读 · 2 评论 -
C++搜索二叉树的实现
拷贝构造如果不自己重新写的话,那么默认的二叉树的拷贝构造都是浅拷贝,这往往不能很好的满足实际需求,所以我们需要在自己重新写的拷贝构造里调用。 析构函数也是如此,需要调用按顺序依次释放每个new出来的节点的相应函数(对应后文的**Destroy()**函数)。 值得关注的是,由于搜索二叉树本身不允许有冗余重复的值,所以在写插入函数Insert()的时候,最好把返回值设置成。简单来说,就是左节点的值比根节点小,右节点的值比根节点大。2.删除的节点有一个孩子节点(只有左孩子或者右孩子)原创 2023-06-25 15:20:35 · 158 阅读 · 1 评论 -
一纸聊完C++继承
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保 持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类子类继承呈现了面向对象 程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继 承是类设计层次的复用。class + 派生类名 : 继承方式 + 基类名 例如:类似于下面方式就能简单创建出一个继承结构class Person //人类public:string name= "小明";原创 2023-06-22 18:50:51 · 103 阅读 · 2 评论 -
C++位图bitset的简单实现
如上,若对一个100位大小的位图中,第10位和第11位进行置1,那么按照一个char一个字节8bit,应该是在第2个char中,且第二个char中的bit位应该是。 由于在实际代码中为了方便对位进行操作,我们选择底层使用vector包含一个字节的char的vector数组来具体移动位置。通过除的方法找到具体是哪一个char,再通过取模的方法具体找到char中的哪一个bit位。然后用当前值**或‘|’**上1之后左移的具体位数。 检测该位到底是0还是1,则与1左移后的j位。,用每一位来存放某种状态。原创 2023-07-23 18:14:15 · 207 阅读 · 0 评论 -
C++常见排序代码大全
我将按照一下常见排序给出相应的C++排序代码,并且必要时会给出非递归版本。 选择排序需要准备的Swap交换函数。 在快排前面加上一个判断即可。//只有end2越界。原创 2023-07-27 22:41:25 · 1222 阅读 · 0 评论 -
C++Map方括号[]的用法
在使用Map中我们可以使用map[key]来访问相应的key值,在以上代码的基础上添加一句,则能在原有基础上修改value值。具体实例如下:使用[]来统计vector中的单词。map的方括号[]经常用来统计单词使用个数,若使用map[key]++的方式则。用完后你会发现,哇!原创 2023-07-09 11:35:43 · 1017 阅读 · 3 评论 -
C++深入了解类和对象
这里创建了Init()函数进行了初始化,但是如果每次调用对象都需要用Init来调用未免有些不方便,所以C++提供了构造函数。构造函数名称与类名相同,创建类对象由编译器自动生成,每个成员的初始值在对象的整个生命周期只有一次。原创 2023-03-05 22:01:15 · 77 阅读 · 0 评论 -
C++智能指针之shared_Ptr的原理以及简单实现
所绑定的一种解决可能存在的资源泄露等问题的策略。能够自动管理内存的大致原理是:对象调用构造,资源就保存,对象不使用之后调用析构,则资源顺带释放。它允许多个指针同时共享同一个对象,同时确保当所有指向该对象的指针都被销毁时,该对象也会被正确地释放。 关于智能指针,它是一种C++对象,它的行为类似于指针,但是它具有自动管理内存的能力。智能指针常见的思想是。记录有多少个指针指向它,存在即+1,不指向则-1,归0后则释放资源。我们想要的计数器必须是同一份资源的计数器,而且是多个对象所共享的,所以。原创 2023-07-27 22:07:31 · 2647 阅读 · 6 评论 -
C++11必看总结知识点,看完都懂的是老鸟
左值是一个数据表达式(变量名/解引用指针),如:int a。**什么是左值引用?**例如:int& ref = a;2.**什么是右值?**右值是一个数据表达式,如10,x+y;原创 2023-07-23 21:16:15 · 126 阅读 · 2 评论 -
C++开散列(哈希桶)的模拟实现
插入数据之前一般要用**负载因子(有效数据个数/容器大小)**判断是否要扩容,一般的如闭散列的负载因子控制在0.7-0.8左右,但是这个哈希桶由于其链式结构特殊,只需等到数据放满(负载因子 == 1)再扩容即可。C++哈希开散列,又称哈希桶,是为了解决哈希冲突而诞生的方法。、以及里面的**插入Insert()**函数、**删除Erase()**函数、**查找Find()**函数、以及测试函数等。但若出现范围差距过大,如1,2,1000,2的情况,不可能开一个大小为1000的容器,所以想到了。原创 2023-07-22 11:23:04 · 142 阅读 · 0 评论 -
C++List的简单模拟实现
只有在删除的时候才会失效,并且失效的只是指向被删除结点的迭代器,其它的迭代器并不会收到影响。的区别,所以为了避免就因为*与->返回值不同、别处都相同而再次copy一份大差不差的代码,采用了模板参数里面加上Ref指代引用&,和Ptr->指代返回指针类型。这里的默认插入是在pos位置的前面插入的。值得关注的是这里的erase删除函数需要返回一个,用于溯源到删除之前的节点位置(官方源码也是返回的iterator类型),否则可能会发生。首先,由于迭代器底层也是由指针设计而成,我们不妨把迭代器的操作想象成指针。原创 2023-05-27 15:27:07 · 105 阅读 · 5 评论 -
C++红黑树RBTree的插入
红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或者black。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的.1.每个节点颜色不是黑色就是红色2.根节点颜色是黑色的3.当一个节点颜色为红色时,其子节点颜色必定为黑色4.对于每个节点,从该节点到其所有后代的简单路径上,均包含相同数目的黑色节点5.每个叶子节点都是指空节点且均为黑色为什么以上几点红黑树就能保证最长路径节点个数不会超过最短路径的两倍。原创 2023-07-12 11:20:38 · 387 阅读 · 1 评论 -
C++优先级队列PriorityQueue模拟实现
那么在生活中总会看到排队的情况出现。这已经就类似于队列的意义,提前排队的人提前出去。但实际生活中总会有人享有更高的优先级,譬如:军人优先、孕妇优先等。享有特殊性质的人总会有优先特权,这就是优先级队列(PriorityQueue)创建的意义。原创 2023-06-21 15:24:49 · 229 阅读 · 0 评论 -
C++之AVL树的插入实现
整个节点我们采用三叉链结构(左、右、父亲指针)和使用KV模型,并且最重要的是每个节点都会有一个bf平衡因子的整数衡量。//左指针//右指针//双亲指针//存放数据的kv的pair对int _bf;//平衡因子AVLTreeNode(const pair& kv) //构造函数,_kv(kv),_bf(0){}整个类: public:我们需要一个Insert()插入函数、走中序Inorder函数、判高度Height()函数和判断平衡Isbalance()函数。原创 2023-07-10 17:08:24 · 123 阅读 · 1 评论 -
C++模拟底层实现vector
我们在vector的实现里面解决了几个经典的问题:迭代器失效问题、深浅拷贝问题。具体通过这次模拟实现我们更清楚的知道了vector具体底层的实现逻辑究竟是什么。原创 2023-05-01 23:04:04 · 151 阅读 · 2 评论 -
C++布隆过滤器BloomFilter的简单实现
在谈布隆过滤器之前,我们首先需要知道哈希和位图。哈希,就是映射,位图,就是一个个bit位,一般用来判断在不在的模型。但是位图有一个很致命的缺点是:无法映射字符串等类型,所以引入了布隆过滤器。而布隆过滤器,的问题,而且还在哈希上升级了映射规则,不再采用单一映射,而即判断一个元素在不在是采用多个bit位来控制的。 那么,具体布隆过滤器是怎么样存放字符串的呢?现在一种常见的思路是将一个字符串的每个字符的ASCII码加起来代表一个字符串即可,但是相信很多朋友在读到这里的时候肯定心里已经列举了很多反例了。原创 2023-07-23 19:26:14 · 227 阅读 · 0 评论 -
C++多态详解
多态(Polymorphism):通常是指同一个行为面对不同对象,呈现出不同的状态和结果。举个例子: 乘坐公交买票时,成人买票是全价,学生买票是半价,而老人买票是免费的。而对应到计算机里面:多态则由不同继承关系的类对象,去调用同一函数,而产生不同行为,那么具体怎么触发多态机制呢? ——虚函数就是被virtual关键字修饰的函数。 ——虚函数就是为重写而生 ---------> 重写就是为了多态而生。原创 2023-04-19 17:08:43 · 841 阅读 · 2 评论