C++
文章平均质量分 79
奇点 ♡
兴趣编程
展开
-
可变参数模版
名字可以自由取上面的参数args前面有省略号,所以它就是一个可变模版参数,我们把带省略号的参数称为“参数包”,它里面包含了0到N(N>=0)个模版参数。我们无法直接获取参数包args中的每个参数的,只能通过展开参数包的方式来获取参数包中的每个参数,这是使用可变模版参数的一个主要特点,也是最大的难点,即如何展开可变模版参数。原创 2024-06-06 16:17:09 · 257 阅读 · 0 评论 -
左值引用和右值引用
1. 左值引用只能引用左值,不能引用右值。2. 但是const左值引用既可引用左值,也可引用右值。原创 2024-06-06 15:59:43 · 816 阅读 · 0 评论 -
C++异常处理
我们知道抛出异常的类型是任意类型,一般我们都会用自定义类型实际使用中很多公司都会自定义自己的异常体系进行规范的异常管理,因为一个项目中如果大家随意抛异常,那么外层的调用者基本就没办法玩了,所以实际中都会定义一套继承的规范体系。这样大家抛出的都是继承的派生类对象,捕获一个基类就可以了class Exception//基类public:, _id(id){}protected:int _id;class SqlException : public Exception//派生类。原创 2024-05-30 20:00:55 · 631 阅读 · 0 评论 -
位图和布隆过滤器
给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中?可以用set或unordered_set吗?我们知道1G大概10亿字节,40亿个整数需要160亿字节,也就是16G,还没有加上其他的东西也要开空间,所以已经超过了内存的大小,就无法无法全部加载到内存。你们是不是想说我一部分一部分加载到内存就可以了,也是不好,太慢了有什么好的解决方案吗?我们可以用位图,位图就是用去这个数在不在,在就是1,不在就是0。用直接定值法去映射。原创 2024-05-24 15:48:02 · 824 阅读 · 0 评论 -
哈希表----开散列
/记录表中数据个数。原创 2024-05-20 09:54:17 · 221 阅读 · 0 评论 -
哈希表----闭散列
当我们用哈希函数的时候,其中一个就是取这个表的长度len,按照哈希函数:Hash(key) = key% len,将这个位置映射到表中通过上面的除留余数法,会有的问题,可以通过来解决也叫,通过线性探测,依次找后面的位置存储。原创 2024-05-19 21:41:16 · 495 阅读 · 0 评论 -
红黑树的平衡
/库里面提供的结构体,表示key和value颜色初始化必须是红色,如果插入的是黑色,必定会影响每条路径的黑色节点的数量,红色的话只会影响该条路径。原创 2024-05-15 00:06:00 · 238 阅读 · 0 评论 -
AVL树的旋转
每个节点子树高度差的绝对值不超过1(注意节点中如果没有平衡因子),节点的平衡因子是否计算正确。(或者反过来,我们用前面那种)平衡因子=[-1,1],当超出这个范围,搜索树就不平衡了。就是每个节点的左右子树的高度差不超过1,称平衡的搜索树为。是不是感觉这样就链接上了,其实不对的,每个节点的父亲也要更新的。和左单旋是类似的,读者可以模仿上面来分析,自己把它写出来。我们知道搜索二叉树有缺陷,就是不平衡,比如下面的树。更新节点指向是一定要更新他的父亲节点的指向。, 那我们怎么控制搜索树的平衡呢?原创 2024-05-11 08:47:51 · 414 阅读 · 0 评论 -
二叉搜索树的插入和删除
当root是空的时候怎么处理的?为什么用个引用就解决了呢?间接删除:找它的左子树的最大节点代替,也就是左子树的最右节点 或。上面情况可以解决,但是有些情况不能解决,比如。找它的右子树的最小节点代替,也就是右子树的最左节点。你以为第一种情况就解决了吗?如果是下面的情况呢?若它的左子树不为空,则左子树上所有节点的值。若它的右子树不为空,则右子树上所有节点的值。它的左右子树也分别为二叉搜索树。这个很简单,直接给你们看了。是不是发现崩了,为什么呢?原创 2024-05-03 20:23:44 · 381 阅读 · 0 评论 -
多态的原理
多态就是硬套条件,符合多态就按多态走,不符号多态就按类型走// 这里常考一道笔试题:sizeof(Base)是多少?return 0;运行发现Base的大小是8字节,为什么呢?通过调试我们发现,Base对象除了有_b成员变量,还存在一个_vfptr变量, 这个变量是虚函数表指针简称虚表指针。虚函数表简称虚表:存着虚函数地址的函数指针数组,一个含有虚函数的类至少有一个虚表。原创 2024-05-03 10:20:28 · 649 阅读 · 0 评论 -
多继承及菱形继承
可以通过。原创 2024-05-02 19:59:02 · 878 阅读 · 0 评论 -
类与对象--天选之子
关于编译器默认生成的函数1.内置类型不做处理2.自定义类型会调用相应的构造或析构函数拷贝构造函数和赋值运算符重载函数1.内置类型完成值拷贝或浅拷贝,一个一个字节拷贝2.自定义类型会调用自己的拷贝构造或赋值重载一旦涉及资源申请,一定要写,不用编译器生成的。原创 2024-02-25 11:05:48 · 854 阅读 · 1 评论 -
类与对象--入门
c语音中有结构体,但是只能定义变量,但是在C++中的结构体可以定义函数。perror("malloc申请空间失败");return;_size = 0;C++常用关键字class,不用struct。// 类体:由成员函数和成员变量组成// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。类的两种定义方式。原创 2024-02-23 21:08:52 · 778 阅读 · 0 评论 -
C++入门
使用namespace关键字+命名空间名字+{}// 1. 正常的命名空间定义// 命名空间中可以定义变量/函数/类型//2. 命名空间可以嵌套int a;int b;int c;int d;//3. 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。// ps:一个工程中的test.h和上面test.cpp中两个N1会被合并成一个// test.h注意:一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中。原创 2024-02-23 20:02:10 · 403 阅读 · 0 评论