C++
文章平均质量分 81
爱敲代码的奇点
兴趣编程,热爱编程
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
智能指针的原理和使用
下面我们先分析一下下面这段程序有没有什么内存方面的问题?上面的问题分析出来我们发现有什么问题?不管是哪里抛异常都会导致内存泄漏的问题你们是不是想用异常的重新抛出的方法来解决?但是这个有点麻烦,假如有很多要重新抛出,就要写好多次try catch什么是内存泄漏,内存泄漏的危害什么是内存泄漏:内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。原创 2024-11-03 21:06:37 · 1029 阅读 · 0 评论 -
【C++11】function包装器和bind的使用
一般而言,我们用它可以把一个原本接收N个参数的函数fn,通过绑定一些参数,返回一个接收M个(M可以大于N,但这么做没什么意义)参数的新函数。C++中的function本质是一个类模板,也是一个包装器。函数指针,仿函数,lambda,如此丰富的类型,可能会导致模板的效率低下,可以统一用function来包装统一类型。象中参数的位置:剩余参数中_1为newCallable的第一个参数,_2为第二个参数,以此类推。arg_list中的参数可能包含形如_n的名字,其中n是一个整数,这些参数是“占位符”,表示。原创 2024-11-02 11:44:54 · 478 阅读 · 0 评论 -
【C++11】C++线程库和原子性操作库和锁以及条件变量的使用
在C++11之前,涉及到多线程问题,都是和平台相关的,比如windows和linux下各有自己的接口,这使得代码的可移植性比较差。C++11中最重要的特性就是对线程进行支持了,使得C++在并行编程时不需要依赖第三方库,而且在原子操作中还引入了原子类的概念。要使用标准库中的线程,必须包含< thread >头文件。注意:1. 线程是操作系统中的一个概念,线程对象可以关联一个线程,用来控制线程以及获取线程的状态。2. 当创建一个线程对象后,没有提供线程函数,该对象实际没有对应任何线程。原创 2024-11-02 10:57:40 · 1326 阅读 · 0 评论 -
可变参数模版
名字可以自由取上面的参数args前面有省略号,所以它就是一个可变模版参数,我们把带省略号的参数称为“参数包”,它里面包含了0到N(N>=0)个模版参数。我们无法直接获取参数包args中的每个参数的,只能通过展开参数包的方式来获取参数包中的每个参数,这是使用可变模版参数的一个主要特点,也是最大的难点,即如何展开可变模版参数。原创 2024-06-06 16:17:09 · 313 阅读 · 0 评论 -
【C++11】左值引用和右值引用
1. 左值引用只能引用左值,不能引用右值。2. 但是const左值引用既可引用左值,也可引用右值。原创 2024-06-06 15:59:43 · 1345 阅读 · 0 评论 -
C++异常处理
我们知道抛出异常的类型是任意类型,一般我们都会用自定义类型实际使用中很多公司都会自定义自己的异常体系进行规范的异常管理,因为一个项目中如果大家随意抛异常,那么外层的调用者基本就没办法玩了,所以实际中都会定义一套继承的规范体系。这样大家抛出的都是继承的派生类对象,捕获一个基类就可以了class Exception//基类public:, _id(id){}protected:int _id;class SqlException : public Exception//派生类。原创 2024-05-30 20:00:55 · 713 阅读 · 0 评论 -
位图和布隆过滤器
给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中?可以用set或unordered_set吗?我们知道1G大概10亿字节,40亿个整数需要160亿字节,也就是16G,还没有加上其他的东西也要开空间,所以已经超过了内存的大小,就无法无法全部加载到内存。你们是不是想说我一部分一部分加载到内存就可以了,也是不好,太慢了有什么好的解决方案吗?我们可以用位图,位图就是用去这个数在不在,在就是1,不在就是0。用直接定值法去映射。原创 2024-05-24 15:48:02 · 891 阅读 · 0 评论 -
哈希表----开散列
/记录表中数据个数。原创 2024-05-20 09:54:17 · 289 阅读 · 0 评论 -
哈希表----闭散列
当我们用哈希函数的时候,其中一个就是取这个表的长度len,按照哈希函数:Hash(key) = key% len,将这个位置映射到表中通过上面的除留余数法,会有的问题,可以通过来解决也叫,通过线性探测,依次找后面的位置存储。原创 2024-05-19 21:41:16 · 631 阅读 · 0 评论 -
红黑树的平衡
/库里面提供的结构体,表示key和value颜色初始化必须是红色,如果插入的是黑色,必定会影响每条路径的黑色节点的数量,红色的话只会影响该条路径。原创 2024-05-15 00:06:00 · 363 阅读 · 0 评论 -
AVL树的旋转
每个节点子树高度差的绝对值不超过1(注意节点中如果没有平衡因子),节点的平衡因子是否计算正确。(或者反过来,我们用前面那种)平衡因子=[-1,1],当超出这个范围,搜索树就不平衡了。就是每个节点的左右子树的高度差不超过1,称平衡的搜索树为。是不是感觉这样就链接上了,其实不对的,每个节点的父亲也要更新的。和左单旋是类似的,读者可以模仿上面来分析,自己把它写出来。我们知道搜索二叉树有缺陷,就是不平衡,比如下面的树。更新节点指向是一定要更新他的父亲节点的指向。, 那我们怎么控制搜索树的平衡呢?原创 2024-05-11 08:47:51 · 515 阅读 · 0 评论 -
二叉搜索树的插入和删除
当root是空的时候怎么处理的?为什么用个引用就解决了呢?间接删除:找它的左子树的最大节点代替,也就是左子树的最右节点 或。上面情况可以解决,但是有些情况不能解决,比如。找它的右子树的最小节点代替,也就是右子树的最左节点。你以为第一种情况就解决了吗?如果是下面的情况呢?若它的左子树不为空,则左子树上所有节点的值。若它的右子树不为空,则右子树上所有节点的值。它的左右子树也分别为二叉搜索树。这个很简单,直接给你们看了。是不是发现崩了,为什么呢?原创 2024-05-03 20:23:44 · 474 阅读 · 0 评论 -
多态的原理
多态就是硬套条件,符合多态就按多态走,不符号多态就按类型走// 这里常考一道笔试题:sizeof(Base)是多少?return 0;运行发现Base的大小是8字节,为什么呢?通过调试我们发现,Base对象除了有_b成员变量,还存在一个_vfptr变量, 这个变量是虚函数表指针简称虚表指针。虚函数表简称虚表:存着虚函数地址的函数指针数组,一个含有虚函数的类至少有一个虚表。原创 2024-05-03 10:20:28 · 739 阅读 · 0 评论 -
多继承及菱形继承
可以通过。原创 2024-05-02 19:59:02 · 986 阅读 · 0 评论 -
类与对象--天选之子
关于编译器默认生成的函数1.内置类型不做处理2.自定义类型会调用相应的构造或析构函数拷贝构造函数和赋值运算符重载函数1.内置类型完成值拷贝或浅拷贝,一个一个字节拷贝2.自定义类型会调用自己的拷贝构造或赋值重载一旦涉及资源申请,一定要写,不用编译器生成的。原创 2024-02-25 11:05:48 · 955 阅读 · 1 评论 -
类与对象--入门
c语音中有结构体,但是只能定义变量,但是在C++中的结构体可以定义函数。perror("malloc申请空间失败");return;_size = 0;C++常用关键字class,不用struct。// 类体:由成员函数和成员变量组成// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。类的两种定义方式。原创 2024-02-23 21:08:52 · 828 阅读 · 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 · 461 阅读 · 0 评论
分享