
CPP
文章平均质量分 81
记录c++的学习笔记
MLGDOU
这个作者很懒,什么都没留下…
展开
-
【CPP】智能指针
什么是内存泄漏:内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。内存泄漏的危害:长期运行的程序出现内存泄漏,影响很大,如操作系统、后台服务等等,出现内存泄漏会导致响应越来越慢,最终卡死。int _day=0;~Date(){}new[]开空间时编译器会在数组开头多开4个字节,存要调用析构函数的个数。原创 2024-03-25 21:26:20 · 2001 阅读 · 7 评论 -
【CPP】C++11多线程
在C++11之前,涉及到多线程问题,都是和平台相关的,比如windows和linux下各有自己的接口,这使得代码的可移植性比较差。C++11中最重要的特性就是对线程进行支持了,使得C++在并行编程时不需要依赖第三方库,而且在原子操作中还引入了原子类的概念。要使用标准库中的线程,必须包含< thread >头文件。原创 2024-03-22 18:36:50 · 497 阅读 · 9 评论 -
16.【CPP】详解继承
1.基类private成员在派生类中无论以什么方式继承都是不可见的。这里的不可见是指基类的私有成员还是被继承到了派生类对象中,但是语法上限制派生类对象不管在类里面还是类外面都不能去访问它2.基类private成员在派生类中是不能被访问,如果基类成员不想在类外直接被访问,但需要在派生类中能访问,就定义为protected。可以看出保护成员限定符是因继承才出现的3.使用关键字class时默认的继承方式是private,使用struct时默认的继承方式是public,不过最好显示的写出继承方式。原创 2024-03-15 18:16:45 · 1962 阅读 · 5 评论 -
15.【CPP】C++11(右值引用||移动语义||完美转发||可变参数列表||lambda表达式)
知乎大佬常左值引用可以引用右值。原创 2024-03-12 13:27:28 · 930 阅读 · 0 评论 -
14.【CPP】哈希的应用(位图||布隆过滤器||哈希切分)
更好的方法是采用哈希切分,通过hash函数将A和B文件的query转化到编号的小文件中,hashii=hashfunc(query)%1000,放在小文件中以后,最终每个文件中存放的都是 hashi 相同的元素,这里的一个小文件就类似于一个哈希桶,里面的这些元素只有两种可能:重复、冲突。哈希切割的话不是平均切割,那就会导致有的小文件比较小,有的比较大,那就有可能存在有的小文件超过了可用内存1G(那其实就是对应的冲突比较多)那这两种不同的情况,我们的处理方式也是不同的。2.没什么重复值,大部分都是不同的。原创 2024-03-07 16:09:18 · 1093 阅读 · 2 评论 -
13【CPP】Hash(闭散列||开散列)
闭散列:也叫开放定址法,当发生哈希冲突时,如果哈希表未被装满,说明在哈希表中必然还有空位置,那么可以把key存放到冲突位置中的“下一个” 空位置中去。原创 2024-03-06 19:08:46 · 1268 阅读 · 1 评论 -
12.【CPP】map和set
STL总共实现了两种不同结构的管理式容器:树型结构与哈希结构。树型结构的关联式容器主要有四种:map、set、multimap、multiset。这四种容器的共同点是:使用平衡搜索树(即红黑树)作为其底层结果,容器中的元素是一个有序的序列。下面一依次介绍每一个容器。原创 2024-03-05 17:58:32 · 890 阅读 · 0 评论 -
【数据结构】红黑树(RBTree)
红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保。原创 2024-03-04 16:44:21 · 560 阅读 · 0 评论 -
【数据结构】一步一步实现AVL树
1.parent->bf等于1||-1,说明parent所在的子树高度变了,(因为插入前parent->bf等于0,插入前左右子树高度相等,现在有一边高了)需要继续向上更新平衡因子。2.parent->bf等于2||-2,parent所在的子树不平衡,需要旋转处理这棵子树。3.parent->bf等于0,parent所在的子树平衡无需更新。我们先定义有以上三种子节点,分别记为x,y,z,以便后文讲解。b变成了30的右边,30变成60的左边,60变成整棵树的根。,若非那么c节点本身就要先旋转调整。原创 2024-03-04 16:11:31 · 489 阅读 · 0 评论 -
11.【CPP】模版(深入理解模版的实例化,从编译链接的原理理解模版为何无法分离编译)
由于模版实例化是惰性的,编译test.cpp时包含了头文件halo.h(里面有add的声明)编译器就能以为halo.cpp会有add的实现所以能通过编译。编译halo.cpp时,可以解析模板定义并检查语法,但不能生成add函数的代码。因为要生成代码,需要知道模板参数,即需要一个类型,而不是模板本身。拿func函数对比,头文件在预处理时展开,func函数在编译时找到了声明编译器就把函数地址留到了链接时确定。原创 2024-02-17 23:54:06 · 1188 阅读 · 2 评论 -
10.【CPP】栈和队列(栈队列互相实现&栈排序||priority_queue||仿函数)
仿函数(Functor)又称为函数对象(Function Object)是一个能行使函数功能的类。仿函数的语法几乎和我们普通的函数调用一样,不过作为仿函数的类,都必须重载operator()运算符。因为调用仿函数,实际上就是通过类对象调用重载后的operator()运算符。编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。1.默认用vector,默认是大堆(大的优先级高)仿函数less。输出hello and world。原创 2024-02-14 23:40:01 · 492 阅读 · 0 评论 -
9.【CPP】List (迭代器的模拟实现||list迭代器失效||list的模拟实现)
前面说过,此处大家可将迭代器暂时理解成类似于指针,迭代器失效即迭代器所指向的节点的无效,即该节点被删除了。因为list的底层结构为带头结点的双向循环链表,因此在list中进行插入时是不会导致list的迭代器失效的**,只有在删除时才会失效,并且失效的只是指向被删除节点的迭代器,其他迭代器不会受到影响**这就相当于iterator本身是const,那么就不能执行++操作,迭代器不能动还叫啥迭代器。如果传一个const对象,那么就需要实现对应的const迭代器,否则会出现权限的放大,是会报错的。原创 2024-02-13 23:07:19 · 986 阅读 · 2 评论 -
8.【CPP】Vector(扩容问题||迭代器失效问题&&简述迭代器的种类)
官方文档vector(){}//v.size()也可以i < n;template<class InputIterator>//写成模板可以用其他类型的迭代区间构造= last)++first;原创 2024-02-12 11:11:47 · 1072 阅读 · 0 评论 -
7.【CPP】String类
我们知道计算机存储英文字母,标点,数字用的是ascall码,128种用一个字节表示绰绰有余。而汉字远远不止128种,因此。> UTF规定:如果一个符号只占一个字节,那么这个8位字节的第一位就为0。如果为两个字节,那么规定第一个字节的前两位都为1,然后第一个字节的第三位为0,第二个字节的前两位为10,然后如果是三个字节的话,那么第一个字节的前三位为111,第四位为0,剩余的两个字节的前两位都为10。原创 2024-01-21 23:30:44 · 1290 阅读 · 9 评论 -
6.【CPP】Date类的实现
Date类的实现原创 2024-01-17 20:18:47 · 1185 阅读 · 2 评论 -
5.【CPP】内存管理(text段&data段&bss段||new&delete底层实现||源码)
text段&&data段&&bss段||nwe&&delete底层实现||源码原创 2024-01-16 15:39:17 · 837 阅读 · 6 评论 -
4.【CPP】入门(初始化列表||explicit||static||友元||静态成员变量/函数)
详解初始化列表||explicit||static||友元||静态成员变量/函数原创 2024-01-14 13:36:09 · 2318 阅读 · 11 评论 -
2.【CPP】入门(宏||内联函数||拷贝构造||析构函数||构造函数)
1.1C++给每个非静态成员函数增加了一个隐式的指针参数,即this指针,让该指针指向当前对象,在函数体中所有成员变量的操作,都是通过该指针去访问。2.如果类中没有显示定义构造函数,则c++编译器会自动生成一个无参的默认构造函数,一旦用户显示定义编译器将不再生成。对于自定义类型会调用其的默认成员函数。注意:无参构造函数、全缺省构造函数、我们没写编译器默认生成的构造函数,都可以认为是默认构造函数。4.inline不建议声明和定义分离,inline是一种“用于实现的关键字”,而不是“用于声明的关键字”。原创 2024-01-11 23:09:10 · 816 阅读 · 1 评论 -
1.【CPP】入门(详解引用||缺省参数||函数重载)
介绍了引用,缺省参数和函数重载等cpp特性原创 2024-01-10 15:21:31 · 1192 阅读 · 11 评论 -
13.【CPP】详解多态
深入理解c++的多态原创 2023-11-20 22:30:49 · 802 阅读 · 4 评论