自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 收藏
  • 关注

原创 windbg下载安装傻瓜式教程

windbg是分析windows上面分析程序的利器 ,Windbg是微软出品的强大调试器,是分析软件异常的利器,Windbg之于windows就像GDB之于linux。(好了,我也就不讲废话了,我想你也只想知道最简单的安装方式...)

2024-01-11 22:30:00 3735

原创 C++标准库中string的底层实现方式

string是C++标准库中常见的容器,不管是在校生日常练习换是职场老鸟写项目,它都是会经常使用的一个容器,你是否经常使用它呢?你是否了解过它的底层实现呢,如果你对此感兴趣,不妨与我共同探索一下它的底层原理。

2024-01-06 00:00:00 891

原创 Win10环境下QT配置环境变量(傻瓜式操作)

找到系统属性中高级,然后点击最下方的环境变量。这是我的路径:E:\QT\5.6.3\msvc2013_64\bin。找到QT的工具路径按照上述方式将QT的工具路径也填入环境变量。我的路径:E:\QT\Tools\QtCreator\bin。最后不要忘记按确定,不然一切都要重新来过,很痛苦的!找到高级系统系统设置(我的是在最右边)。然后这时候就需要找到本地安装QT的安装路径。复制路径,然后点击新建将路径填入。

2023-12-18 23:37:47 3948

原创 带你10分钟学会红黑树

我们都知道二叉搜索树,是一种不错的用于搜索的数据结构,如果二叉搜索树越接近完全二叉树,那么它的效率就会也高,但是它也存在的致命的缺陷,在最坏的情况下,二叉搜索树会退化成为单链表,这时,二叉搜索树也就丧失了它的搜索能力。因此为了解决它的问题,后面就有人提出了两种改进结构。

2023-10-04 17:27:58 200

原创 AVL树的模拟实现(c++)

每次插入平衡因子后都需要对有关这个节点祖先的平衡因子进行更新,那么,什么时候更新结束呐,等节点的祖先的平衡因子等于零的时候更新结束,平衡因子等于0说明之前这颗子树的平衡因子是1或者-1,插入新的节点后树的高度没有变大,而是变得平衡了,此时就不需要更新平衡因子了,那么更新平衡因子的意义在哪里呢,如果更新新插入节点的平衡因子时,它的平衡因子变成-2或者2说明这棵子树不平衡了,需要调整了,此时不必更新平衡因子了,需要及时对这颗子树进行旋转。需要注意的是这里使用了,三叉链,目的是方便平衡因子的更新。

2023-09-25 11:15:42 184

原创 有关哈希的概念,哈希表(哈希桶),unordered_map和unordered_set的模拟实现

在C++中。

2023-09-23 13:56:32 100

原创 异常(C++)

异常是一种处理错误的方式,在C语言中是没有这种处理错误的机制的,在C语言中处理错误通常是。

2023-09-19 18:14:24 102

原创 c++11相关内容介绍

在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。不过由于C++03(TC1)主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯意性的将两个标准合并称为C++98/03标准。从C++0x到C++11,C++标准十年磨一剑,第二个真正意义上的标准珊珊来迟。

2023-09-18 22:20:24 72

原创 智能指针介绍(C++)

关于智能指针大家或多或少都有听说过,因为在C++中没有GC,所以存在很多。

2023-09-18 18:24:23 134

原创 实现一个超级简单的string类(基于c++)

简单的string仅仅需要。

2023-09-17 20:31:08 100

原创 C++11线程库简介

在c++11之前涉及多线程的问题都是和平台相关的,比如windows和linux都有一套自己的接口,这使得代码的可移植性变差。C++11中最重要的特性就是对线程进行了支持,使得C++在编程时不再依赖第三方库,而且原子操作中还引入了原子类的概念,要使用标准库的线程,必须包含头文件,让我们一起来了解一下吧。1.thread类的简单介绍。

2023-09-17 16:21:16 181

原创 海量数据处理

解法1:将其中一个文件存到位图,这个位图要开辟整形的最大个数个空间,然后将第一个文件中的所有整数都加入到位图中,然后读取第二个文件中的整数判断它在不在位图中,如果在位图中就说明这个数是两个文件所共有的,找出全部的这样的数,就是两个文件的交集 ,消耗空间512M。对于两个大文件采取相同的处理方法,,每次加载完一个小文件,就在map中找有没有比堆顶出现次数多的IP地址,有的话,替换堆顶的IP地址,然后对堆进行。解法2:将文件1中的整数映射到位图1中,将文件2中的整数映射到位图2中,然后将两个位图中的数,

2023-09-15 23:30:21 68

原创 位图和布隆过滤器的实现

位图和布隆过滤器是基于哈希思想实现的数据结构,他们在很多的方面都有应用,比如:操作系统中的磁盘标记,快速查找某个数据是否在集合中。布隆过滤器可以高效的进行插入和查询,可以告诉你“某样东西一定不存在或者可能存在”。让我们一起来认识一下它们吧。1.位图。2.布隆过滤器

2023-09-15 14:15:56 57

原创 unordered_map和unordered_set的使用

在C++98中,STL提供了底层为红黑树的结构的一系列关联式容器,在查询时效率可以达到logN,即使最差的情况下需要比较红黑树的高度次,当树中的节点较多时,查询的效率也不是很理想,最好的查询是,进行很少的比较次数就能将元素找出来,因此在C++11中,STL又提供了4个unordered系列的关联式容器,这四个容器与红黑树结构中的关联容器的使用方法是类似的,只是底层结构不同,这里只对unordered_map和unordered_set进行介绍。

2023-09-11 17:15:18 133

原创 特殊类的设计

在C++中有很多关于类的知识,学习并且掌握它们是我们学习C++的重要的一步,怎么检测自己掌握了这些知识呢?请看看尝试解决下面这些问题。

2023-09-11 13:05:11 102

原创 C++单例模式

设计模式是一套被。

2023-09-11 13:03:58 415

原创 C++的类型转换

我们都知道C++是兼容C语言的在C语言中存在两种方式的类型转换,分别是。

2023-09-08 17:13:49 175

原创 C++内存泄露

一般来说,如果不是长期运行的程序,内存泄露的危害不是很大,重启就ok了,但是如果对于需要长期运行的程序来说,不能随便重启,比如:操作系统,服务器程序,内存泄露就会造成严重的危害,危害是:这些程序长期运行下去,没有得到释放的资源越来越多,而能够使用的资源就会越来越少,程序运行起来就会很慢,甚至卡顿,还会导致程序的很多操作失败(因为容器的操作,文件的打开,创建套接字,发送数据等都需要内存)。1.事前预防:写代码时小心再小心,多使用智能指针。3.如何解决内存泄露等相关的问题。

2023-09-08 15:23:02 385

原创 lambda表达式介绍

现在需要对自定义类型进行排序,如果按照_name排序我们需要实现至少两个仿函数,按照_price排序也需要两个仿函数, 按照_num排序也需要两个仿函数, 这样的话就需要我们实现很多的仿函数,如果仿函数的命名风格不好的话,别人对于这些仿函是干什么的必然不好理解,从这里也可以看出好的命名风格也是很重要的。lambda表达式是C++11标准才支持的,有了它以后在一些地方进行使用会方便很多,尤其在一些需要仿函数的地方,lambda表达式完全可以替代它的功能。以值的方式捕捉所有变量,然后又捕捉a变量重复了。

2023-09-07 18:31:12 424

原创 插入排序,选择排序,交换排序,归并排序和非比较排序(C语言版)

所谓排序,就是将一组数据按照递增或者递减的方式进行排列,让这组数据变得有序起来。排序在生活中运用的是十分广泛的,各行各业都用到了排序,比如我们在网购的时候就是按照某种排序的方式来选择东西的。所以去了解排序的实现也就是很重要的了。

2023-09-05 08:33:29 499

原创 二叉树的介绍及二叉树的链式结构的实现(C语言版)

二叉树是一种特殊的树,它最大的度为2,每个节点至多只有两个子树。它是一种基础的数据结构,后面很多重要的数据结构都是依靠它来进行实现的。了解并且掌握它是很重要的。

2023-08-30 05:59:29 1023

原创 树的介绍(C语言版)

除了根节点外,其余节点被分为M(M>0)个相互不想交的集合T1,T2,T3,...Tm,其中每一个集合Ti(1 <= i <=m)又是一颗结构与树类似的子树。树是一种非线性的数据结构,它是由n(n >= 0)个有限的节点组成的具有层次结构的集合,把它叫做树,是因为它看起来像一颗倒挂的树,也就是说它根朝上,而叶子朝下的。若一个节点含有子节点,则这个节点称为其子节点的父节点;一个节点含有的子树的根节点称为该节点的子节点,如上图的B是A的孩子节点。从根到该节点所经分支上的所有节点,如上图,A是所有节点的祖先。

2023-08-28 19:13:12 951

原创 堆,堆排序和TOP—K问题(C语言版)

堆是一种重要的数据结构,堆分为大根堆和小根堆,大根堆堆顶的数据是最大的,小根堆堆顶的数据是最小的,堆在逻辑结构上是一颗完全二叉树,这棵树中如果满足根节点大于左右子树,每个节点都满足这个条件就是大根堆,反之就是小根堆。1.堆的概念和性质堆标准的概念是:如果有一个关键码的集合K = {k0,k1,k2,...,kn-1},把它的所有元素按照完全二叉树的顺序存储方式存储在一个数组中,并且满足:i = 0,1,2..,则称为小堆(或大堆)。

2023-08-28 17:27:30 293

原创 STL-空间配置器的了解

空间配置器,顾名思义就是为了各个容器高效的管理空间(空间的申请与回收)的,在默默的工作的。虽然在常规上使用STL时,可能用不上它,但是站在学习研究的角度,学习它的实现原理对我们有很大的帮助。1.为什么需要空间配置器new申请的空间,虽然可以使用,但是有以下不足之处:1.空间申请与释放需要用户自己管理,容易造成内存泄露。

2023-08-28 11:08:09 274

原创 c++的IO流

很多编程语言都有自己的输入输出流,流是一种抽象的概念,为了方便我们使用各种输入输出设备从而抽象出来的概念。

2023-08-27 13:35:51 173

原创 循环队列的实现(c语言)

循环队列是队列的一种特殊的结构,在生产者——消费者模型中常常使用它, 它在逻辑上是一个环形的连续的结构。在物理可以使用数组来实现。

2023-08-17 23:15:52 389

原创 找到链表的第一个入环节点

1.题目1.题目。

2023-08-14 22:08:47 260

原创 判断链表有环的证明

1.问题1.问题。

2023-08-14 18:18:24 134

原创 数据结构-队列的实现(C语言版)

队列是一种特殊的线性表,它只允许在一端对数据进行插入操作,在另一端对数据进行删除操作的特殊线性表,队列具有先进先出的(FIFO)的 特性,进行插入操作的一端称为队尾,进行删除操作的一端称为队头。队列可以用 数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低,需要挪动数据,因此这里采用链表的方式来进行队列的实现。队尾:元素在队尾入队。队头:元素在队头出对。

2023-08-13 12:47:40 792

原创 数据结构-栈的实现(C语言版)

栈是一种特殊的线性表,只允许在固定的一端进行插入和删除的操作,弹栈:栈的删除操作叫做出栈。压栈:栈的插入操作叫 压栈,入数据在栈顶。栈中的数据元素遵循后进先出的的原则。

2023-08-13 12:37:14 515

原创 数据结构——单链表的实现(c语言版)

虽然单链表有一定的缺陷,但是单链表也有它存在的价值, 它也是作为其他数据结构的一部分出现的,比如在图,哈希表中。由于单链表结构的限制,这里只实现了在pos位置之后的插入和删除,如果删除pos的后一个节点就需要确保pos的后一个节点是存在的,否则就会出现问题。尾插也分为链表为空和指针不为空的情况,如果链表为空,申请节点,让链表的头结点指向申请的节点,然后将这个节点的。,如果链表不为空,首先需要找到尾结点,然后将尾结点与这个节点链接起来,再将这个新申请的节点的。5.查找链表的值和修改链表节点的值。

2023-08-12 22:43:18 997 1

原创 数据结构-带头双向循环链表的实现

带头双向循环链表是一种重要的数据结构,它的结构是很完美的,它弥补了单链表的许多不足,让我们一起来了解一下它是如何实现的吧!1.节点的结构它的节点中存储着数据和两个指针,一个。

2023-08-12 13:57:37 1085

原创 map和set的使用(基于STL库)

map和set是STL模板库中重要的关联式容器,与序列式容器不同的是,关联式容器里面存储的是结构的键值对,在数据检索时比序列式容器效率更高。让我们一起来看看吧!

2023-08-02 14:54:51 147

原创 二叉树的前,中,后序的非递归实现(c++)

对于二叉树来说,遍历它有多种方式,其中递归遍历是比较简单的,但是非递归的实现就有一定的难度,在这里介绍一种非递归实现二叉树遍历的方式。1.前序遍历。

2023-08-01 12:47:39 340

原创 二叉搜索树(Binary Search Tree)的模拟实现

Binary Search Tree的实现代码1.二叉搜索树的操作 1.1二叉搜索树的查找 1.2二叉搜索树的插入 1.3二叉搜索树的删除 1.4Inorder3.二叉搜索树的应用 3.1K模型 3.2KV模型4.二叉搜索树的缺点

2023-06-19 18:34:54 255 1

原创 c++多态详解

对于面向对象语言来说,多态是面向对象的三大特性之一,简单一点来说多态就是多种形态,是不同对象接收到同一种消息产生的不同动作或者反应,听起来有点抽象,实际上就是完成一个任务让不同的对象来做产生的效果是不同的。让我们一起来深入了解一下多态吧!

2023-06-18 19:17:03 2568 2

原创 deque的介绍

在c++标准库中deque是作为 stack和queue的底层容器就是deque,我们要是了解过list和vector就会知道这两种容器各有优劣,vector的优点是支持随机访问,进而可以支持排序和二分查找等算法,它的缺点是如果空间不够增容的话要付出一定的代价(性能的损失),头插头删和中间位置的插入删除需要挪动数据,因此比较慢,存在空间的浪费。因为deque在一定程度上弥补了list不支持随机访问的缺点,也弥补了vector头插头删效率低和增容代价大的缺点,那么deque是通过怎么样来实现的那呢?

2023-06-17 16:40:38 639

原创 深入了解模板知识(c++)

在c++中模板是很重的,泛型编程就是模板最好的体现,模板的出现就是为了更好的复用代码,有了它,我们不必写各种逻辑相同只是逻辑中的数据的类型的不同的代码,使得我们编写代码变得更加高效,下面让我们一起来深入的理解和模板有关的知识。1.非类型模板参数模板参数分为类型形参与非类型形参。类型形参是出现在模板参数列表中跟在class或者typename后面的参数类型名称。非类型形参是指在模板形参列表中的一个作为形参的常量,在函数模板或者类模板中可以将该参数当做常量使用。

2023-06-17 11:55:58 377

原创 priority_queue的模拟实现

向下调整算法首先从根节点开始,如果是建大堆,就将根节点与左右节点中较大的那个比较,如果左右节点中值较大的那个大于根节点的值就交换左右节点与根节点,更新根节点和左右节点的值,继续比较,知道比较的叶子节点的下标大于数组的值,我这样将可能太抽象了,就拿这组已经调整好了的数据来看看吧,仿函数也叫函数对象,这里我们实现的优先级队列,不管建大根堆还是小根堆,都只能实现一份,要是再去实现另一种的话如果在写一份相同的代码,只是比较的逻辑相反那么代码的冗余度就会很高,所以这里提供了第三个模板参数,用来解决这个问题。

2023-06-11 19:39:49 578

原创 list的模拟实现

list是vector中重要的容器,了解它的原理对于我们掌握它是有很多的帮助的,一般list和vector都是一起来使用的,因为它们的优缺点不同,刚好可以互补。list的优点是任意位置的插入和删除都很快,它的缺点是不支持随机访问,而vector的优点是支持随机访问,进而就可以很好的支持排序算法,二分查找,堆算法等,它的缺点是扩容要付出一定的代价,而且除了尾上的插入和删除外其他位置的插入和删除都不快(因为要挪动数据)。下面让我们一起来实现一下list吧。

2023-06-10 15:42:22 2252

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除