随笔分类 -  C++

摘要:#include "malloc.h" #include <stdio.h> struct Base { struct VFunc* vF; }; struct VFunc { void (*print)(Base* b); }; void print(Base* b) { printf("%s\n 阅读全文
posted @ 2021-08-21 23:11 肥斯大只仔 阅读(141) 评论(0) 推荐(0)
摘要:#include <iostream> #include <vector> #include <thread> #include <mutex> #include <condition_variable> #include <queue> #include <functional> using na 阅读全文
posted @ 2021-03-29 19:04 肥斯大只仔 阅读(107) 评论(0) 推荐(0)
摘要:#include <iostream> #include <mutex> #include <queue> #include <thread> using namespace std; //缓冲区大小 #define BufferSize 10 //使用缓冲区需要加锁 mutex mtxBuffer 阅读全文
posted @ 2021-03-29 18:59 肥斯大只仔 阅读(352) 评论(0) 推荐(0)
摘要:strcpy 代码 char* mystrcpy(char* dst, const char* src) { if((dst == nullptr)||(src == nullptr)) return nullptr; char* ret = dst; while ((*dst++ = *src++ 阅读全文
posted @ 2021-03-16 23:37 肥斯大只仔 阅读(185) 评论(0) 推荐(0)
摘要:特点 保证类只有一个实例对象,且提供一个访问方法,自行生成实例 个人认为不需要析构函数,这个对象生成后虽然在堆,但指向它的指针是静态的,静态就是对象是属于类的,生成到程序结束就可以一直存在,不会内存泄漏 所有实现方式都要注意的点 私有构造函数不允许用户创建对象 不允许复制对象 最简单的懒汉式 cla 阅读全文
posted @ 2021-03-15 00:53 肥斯大只仔 阅读(121) 评论(0) 推荐(0)
摘要:总结 特性 每个节点只能是黑色的或者是红色的 根节点是黑色的 叶子节点是nil结点,黑色的(个人认为只是为了操作更方便,因为经常需要判断uncle、brother的颜色,就不需要判空了) 红色节点的子节点不能为红色节点 一个结点到每个子孙叶子节点路径上的黑色节点个数都相同 插入 插入的节点都为红色 阅读全文
posted @ 2021-02-24 22:42 肥斯大只仔 阅读(130) 评论(0) 推荐(0)
摘要:开篇总结 其实《Effective C++》对于现在的我来说还是有点晦涩,有一些条款看起来又干又绕,所以这里只总结一下自己能理解、和对自己有用的部分条款 条款4:确定对象被使用前已先被初始化 类需要构造函数才可以初始化成员变量。 构造函数用初始化列表。如果在构造函数体内进行的话,是赋值操作。(但是v 阅读全文
posted @ 2021-01-29 14:49 肥斯大只仔 阅读(259) 评论(0) 推荐(0)
摘要:shared_ptr template <typename T> class Sptr { public: //默认构造函数 Sptr() :ptr(nullptr), counter(new int(0)) {} //构造函数 Sptr(T* pIn) :ptr(pIn), counter(new 阅读全文
posted @ 2021-01-16 01:04 肥斯大只仔 阅读(362) 评论(0) 推荐(0)
摘要:参考B站侯捷 new的分解动作 new关键字调用operator new operator new调用malloc 强制转换 调用构造函数(这也是为什么malloc不能申请包含指针的类内存的原因) PS:new关键字是表达式,固定形式;operator new才可以重载 delete的分解动作 de 阅读全文
posted @ 2021-01-15 00:24 肥斯大只仔 阅读(86) 评论(0) 推荐(0)
摘要:题目 我们提供了一个类: public class Foo { public void first() { print("first"); } public void second() { print("second"); } public void third() { print("third") 阅读全文
posted @ 2020-12-31 16:22 肥斯大只仔 阅读(105) 评论(0) 推荐(0)
摘要:代码 #define _CRTDBG_MAP_ALLOC #include <iostream> #include <crtdbg.h> using namespace std; void test1() { int* p = new int[10]; //int* p = (int*)malloc 阅读全文
posted @ 2020-12-30 20:54 肥斯大只仔 阅读(628) 评论(0) 推荐(0)
摘要:代码测试 #include <iostream> using namespace std; int main() { int i = 0; cout << i++ << i++ << i << ++i << endl; int j = 0; cout << j++; cout << j++; cou 阅读全文
posted @ 2020-10-16 09:50 肥斯大只仔 阅读(242) 评论(0) 推荐(0)
摘要:总结 什么是平衡二叉树: 基于二叉排序树 左右子树的深度之差的绝对值不超过1 左右子树都是平衡二叉树 为什么要修改二叉排序树为平衡二叉树:因为查找二叉树的比较次数和层数有关 在构造二叉排序树的过程中,会出现四种失衡现象 如何进行调整:找到最小不平衡子树,将其调平衡 最小不平衡子树:离插入节点最近且平 阅读全文
posted @ 2020-10-16 01:45 肥斯大只仔 阅读(469) 评论(0) 推荐(0)
摘要:指针作为参数 先明确一下指针的概念,指针存放的是变量的地址。 在函数调用时用指针做参数,表示把变量的地址传递给子函数。但是子函数只能修改指针所指的变量的值,并不能修改指针的指向。 如果想要修改指针的指向,就要用指针的引用(指针的指针也可以,但是这里只谈指针的引用)。 例子 先拿最简单的main函数里 阅读全文
posted @ 2020-05-04 16:22 肥斯大只仔 阅读(511) 评论(0) 推荐(0)