C++
文章平均质量分 89
C++知识点
蝎子莱莱xo
这个作者很懒,什么都没留下…
展开
-
C++知识点 -- 命名空间、输入输出、参数缺省、函数重载、引用、内联等
命名空间、输入输出、参数缺省、函数重载、引用、内联等原创 2022-10-10 17:22:29 · 202 阅读 · 0 评论 -
C++知识点 -- 类和对象(上)
类、访问限定符、对象、this指针原创 2023-01-12 18:34:42 · 128 阅读 · 0 评论 -
C++知识点 -- 类和对象(中)
构造函数、析构函数、拷贝构造、赋值重载、默认成员函数、日期类Date的实现原创 2023-01-13 17:53:08 · 102 阅读 · 0 评论 -
C++知识点 -- 类和对象(下)
初始化列表、explicit关键字、匿名对象、静态成员、友元、内部类原创 2023-01-14 15:35:23 · 47 阅读 · 0 评论 -
C++知识点 -- 内存管理及模板初阶
c++内存管理和模板原创 2022-09-22 20:29:28 · 297 阅读 · 0 评论 -
C++知识点 -- 静态库的生成与使用
静态库的生成与使用原创 2022-10-10 20:09:38 · 690 阅读 · 0 评论 -
C++知识点 -- string类
string类的使用,以及一些例题原创 2022-10-18 17:58:02 · 251 阅读 · 0 评论 -
C++知识点 -- string类的模拟实现
string类的模拟实现原创 2022-10-20 20:25:08 · 273 阅读 · 0 评论 -
C++知识点 -- vector模拟实现
C++的STL标准库vector模拟实现原创 2022-11-03 20:50:09 · 260 阅读 · 0 评论 -
C++知识点 -- list的模拟实现
模拟实现c++STL库中的list原创 2022-11-17 21:04:49 · 354 阅读 · 0 评论 -
C++知识点 -- Stack和Queue的模拟实现
STL中stack、queue和priority_queue的模拟实现原创 2022-11-28 18:42:41 · 361 阅读 · 0 评论 -
C++知识点 -- 模板进阶
STL模板进阶:非类型模板参数、模板的特化、模板的分离编译原创 2022-12-02 13:23:19 · 97 阅读 · 0 评论 -
C++知识点 -- 继承
C++知识点 -- 继承,虚拟继承,菱形继承原创 2022-12-20 18:02:31 · 60 阅读 · 0 评论 -
C++知识点 -- 多态
c++多态:虚函数,函数重写,多态原理,虚函数表原创 2023-01-12 11:28:32 · 93 阅读 · 0 评论 -
C++知识点 -- 二叉搜索树
二叉搜索树原创 2023-03-22 20:23:10 · 65 阅读 · 0 评论 -
C++刷题 -- 二叉树oj
C++刷题 – 二叉树oj文章目录C++刷题 -- 二叉树oj1.根据二叉树创建字符串2.二叉树的层序遍历3.二叉树的层序遍历 II4.二叉树的最近公共祖先5.二叉搜索树与双向链表6.从前序与中序遍历序列构造二叉树7.二叉树的前序遍历(非递归)8.二叉树的中序遍历(非递归)9.二叉树的后序遍历(非递归)1.根据二叉树创建字符串https://leetcode.cn/problems/construct-string-from-binary-tree/前序遍历二叉树,打印出每个节点,每个根节点的左右原创 2023-03-25 16:54:42 · 142 阅读 · 0 评论 -
C++知识点 -- map和set的使用
可以看到map的[ ]重载,输入的参数是key的值的引用,返回的参数是value的值的引用,与以前容器的[ ]重载不一样,这就意味着我们可以使用[ ] 来通过key改变value,达到计数的效果;返回set中value的个数,实际上count不是为set设计的接口,而是为multiset设计的,因为multiset允许键值冗余,而set中每个value只允许存在一个;map中存放的是真正的键值对<key, value>,set中只存放value,但在底层存放的是<value, vaule>构成的键值对;原创 2023-03-29 20:14:34 · 96 阅读 · 0 评论 -
C++刷题 -- map和set
先使用map来统计次数,再通过sort来排序,由于map的key是单词,所以map中的数据是按照单词的字典序排好的,从map遍历出来的数据也是按照字典序排好的,由于sort是不稳定的排序算法,所以在遇到出现次数相同的单词时,需要我们通过仿函数来控制比较;先将所有的单词都插入map中进行计数,然后再将map中的所有pair都放进优先级队列中,根据次数建大堆,出现次数相等的,根据单词进行字典序排序,这需要在仿函数中进行控制;题目要求返回出现频率最高的前k个单词,如遇到相同频率的单词,应按字典序排;原创 2023-03-29 21:38:07 · 87 阅读 · 0 评论 -
C++知识点 -- AVL树
此时,根节点左子树的右侧节点(60)的平衡因子为-1,先对30进行左单旋,将该树变为单纯的左边高,再对90进行右单旋,达到平衡;subRL的平衡因子为-1,双旋后,subR的平衡因子需更新为1,parent的平衡因子需更新为0;subRL的平衡因子为1,双旋后,subR的平衡因子需更新为0,parent的平衡因子需更新为-1;这种情况的平衡因子更新为:根节点为0,根节点左孩子节点为-1,右孩子节点为0;这种情况的平衡因子更新为:根节点为0,根节点左孩子节点为0,右孩子节点为1;判断该树是否为平衡的;原创 2023-04-03 10:57:05 · 144 阅读 · 0 评论 -
C++知识点 -- 红黑树
benchmark引用传参,走完第一条路经后,benchmark是0,就把blackNum给benchmark,等走完第二条路径后,benchmark是上一条路径的引用,不是0了,而是上一条路径的黑色节点数量,就可以作为基准值了;第二种:如果u节点存在,则其一定是黑色的,那么cur节点原来的颜色一定是黑色的,现在看到其是红色的原因是因为cur的子树在调整的过程中将cur节点的颜色由黑色改成红色。红黑树用枚举类型来表示每个节点的颜色,使用三叉链来作为基本的结构,节点中的数据还需包含一个节点颜色;原创 2023-04-13 18:14:23 · 94 阅读 · 0 评论 -
C++知识点 -- 使用红黑树封装map和set
typename是告诉编译器这是类型名,不是静态变量名(因为静态变量也可以这样直接从类域中取);原创 2023-04-13 21:53:03 · 91 阅读 · 0 评论 -
C++知识点 -- 哈希表
线性探测在某个位置冲突很多的情况下,会出现效率低下的情况,此时可以使用二次探测,当发生哈希冲突时,并不是从冲突位置依次向后探测,而是每次向后探测 i ^ 2个位置,每次发生哈希冲突时,都++i;其中,State是用来表明每个哈希单元的状态的,EMPTY表示该单元是空的,EXIST表示该单元已存储了数据,DELETE表示该单元的数据已经被删除;哈希删除时,不能随便删除哈希表中已有的元素,若直接删除元素,将会影响其他元素的搜索,因此线性探测采用标记的伪删除法来删除一个元素;原创 2023-04-17 19:23:54 · 64 阅读 · 0 评论 -
C++知识点 -- 使用Hash开散列封装unordered系列容器
哈希表同样是通过第二个模板参数T来确定封装的是map还是set,unordered_map第二个参数传的是pair,unordered_set第二个参数传的是K;++先在当前桶中寻找下一个节点,当前桶找完了,就去寻找下一个有数据的桶;KeyOfT这个模板参数是仿函数,是用来取出T类型数据中的Key的;涉及到比较_data中的key的地方,都需要使用仿函数取key;返回值改为pair<iterator, bool>;返回值改为iterator,返回待寻找元素的迭代器;哈希表的迭代器是单向迭代器,只支持++;原创 2023-04-17 21:26:08 · 92 阅读 · 0 评论 -
C++知识点 -- 哈希的应用
同样可以使用哈希切分来将大文件切分为小文件,那么相同的IP地址一定会进入相同的小文件中,我们只需依次使用map<string, int>对每个小文件统计次数即可;在进行字符串去重时,如果只将字符串通过哈希算法转换为整型值,不可避免地会出现相同码值的字符串,就会造成误判,这时就需要引入布隆过滤器;可以使用多个位表示一个数据的布隆过滤器,每个位被选中后,次数就+1,删除时该位的次数就-1,这样一个数据的删除就不会影响到其他数据了;但是如果这样设计,就会消耗更多的空间,布隆过滤器的优势就削弱了;原创 2023-04-19 15:20:15 · 176 阅读 · 0 评论 -
C++知识点 -- C++11
编译器对于函数返回值的拷贝构造会进行优化,由两次拷贝构造优化为仅一次拷贝构造;原创 2023-04-23 20:51:14 · 58 阅读 · 0 评论 -
C++知识点 -- 异常
/ 服务器开发中通常使用的异常继承体系 class Exception {public :return _id;// 错误信息 int _id;// 错误码 };return str;throw SqlException("权限不足" , 100 , "select * from name = '张三'");原创 2023-04-29 15:42:12 · 836 阅读 · 0 评论 -
C++知识点 -- 智能指针
内存泄漏是指因为疏忽或错误导致程序未能释放已经不再使用的内存的情况;内存泄漏不是内存在物理上消失,而是因为设计错误而失去了对内存的控制(指针丢失);如果内存还在,进程正常结束,内存也会释放;原创 2023-05-06 17:56:45 · 732 阅读 · 0 评论 -
C++知识点 -- 特殊类设计
这样在栈和静态区的对象就无法调用析构函数销毁对象,只有在对上创建的对象调用delete才能够销毁对象,可以写一个公有函数来delete对象,完成对象的销毁;,简单地将拷贝构造和赋值重载delete,会导致CreateObj这个函数传值返回出问题,因为传值返回需要调用拷贝构造,我们可以通过。不让编译器默认生成拷贝构造和赋值重载,c++11可以在默认成员函数后加上 = delete,表示让编译器删除该默认成员函数;可以看出,栈和静态区都无法创建StackOnly对象,只有通过new才能在堆上创建对象;原创 2023-05-09 17:49:33 · 964 阅读 · 0 评论 -
C++知识点 -- C++的类型转换
如果pos == 0,这里end被提升成了无符号整型,当end减到0时,再–end,就会成-1,而对于无符号整型来说,-1就是最大的数;(2)期望用户使用c++的显式强制类型转换;(1)兼容c的隐式类型转换和强制类型转换;但是a在实际的存储空间上还是被改变了的;因此程序进入了死循环;输出结果a就变为3了;原创 2023-05-09 22:02:50 · 706 阅读 · 0 评论 -
C++知识点 -- C++的IO流
如果将SeverInfo中的address从char* 换成string,就会出错,关系到c++的string的设计问题;C++标准IO流提供了4个全局流对象,cin、cout、cerr、clog,其中最常用的就是cin和cout;C++系统实现了一个庞大的类库,其中以ios为基类,其他类都是直接或间接派生自ios类;这是使用write和read进行读写,更加方便地方式是使用。c语言可以使用scanf()!原创 2023-05-10 12:10:19 · 554 阅读 · 0 评论