摘要:
学校因为疫情的原因提前放假了,放了两个月摆了两个月,罪过啊......脑子里面的东西也忘干净了,计划也打乱的,唉,回学校好好学技术了!!最近在看STL源码剖析,也在做相关的项目,大概用两三个月的时间详细解读一下MyTinySTL这个项目,到时候会发到博客上,博客从明天开始恢复持续更新!!!! 不摆烂 阅读全文
摘要:
lambda表达式 lambda表达式概述 我们可以向一个算法传递任何类型的可调用对象。对于一个对象或一个表达式,如果可以对其使用调用调用运算符,则称它为可调用的。即,如果 e 是一个可调用的表达式,则我们可以编写代码 e(args) ,其中 args 是一个逗号分隔的一个或多个参数的列表。 通常 阅读全文
摘要:
智能指针原理 C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理。程序员自己管理堆内存可以提高了程序的效率,但是整体来说堆内存的管理是麻烦的,**C++11中引入了智能指针的概念,方便管理堆内存。**使用普通指针,容易造成堆内存泄露(忘记释放),二次释放,程序发生异常时 阅读全文
摘要:
位图 概念 位图: 所谓位图,就是用每一位来存放某种状态,适用于海量数据,数据无重复的场景。通常是用来判断某个数据存不存在的。 适用场景: 如果我们需要对大量的数据进行处理,判断该数据在不在,比如40亿个整形数据,如果我们用unordered_set来存放这些数据,大约需要占用16G的内存,显然这是 阅读全文
摘要:
列表初始化 用法 在C++98中,{}只能够对数组元素进行统一的列表初始化,但是对应自定义类型,无法使用{}进行初始化,如下所示: // 数组类型 int arr1[] = { 1,2,3,4 }; int arr2[6]{ 1,2,3,4,5,6 }; // 自定义类型(C++98不支持下面这种初 阅读全文
摘要:
unordered_set unordered_set是以无特定顺序存储唯一元素的容器,并且允许根据它们的值快速检索单个元素,是一种K模型。 在unordered_set中,元素的值同时是它的key,它唯一地标识它。键值是不可变的,因unordered_set中的元素不能在容器中修改一次 ,但是可以 阅读全文
摘要:
vector容器补充(下面会用到) 我们都知道vector容器不同于数组,能够进行动态扩容,其底层原理:所谓动态扩容,并不是在原空间之后接续新空间,因为无法保证原空间之后尚有可配置的空间。而是以原大小的两倍另外配置一块较大空间,然后将原内容拷贝过来,并释放原空间。因此,对 vector 的任何操作需 阅读全文
摘要:
关联式容器 关联式容器也是用来存储数据的,与序列式容器(如vector、list等)不同的是,其里面存储的是<key,value>结构的键值对,在数据检索时比序列式容器效率更高。今天要介绍的的四种容器是树形关联式容器:map、set、multimap和multiset。它们的底层都是用红黑树来实现的 阅读全文
摘要:
排序总览 什么是排序? 🔥**排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 ✍️排序的稳定性:**假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j 阅读全文
摘要:
红黑树 概念和性质 红黑树的概念: 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。它是通过控制节点颜色的方式来控制这棵树的相对平衡,保证了没有一条路径会比其它路径长出两倍,红黑树是一种接近平衡的二叉树(说它是接近平衡因为它并没有像AVL树的平衡因子的 阅读全文