自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 C++ 对象内存布局及字节对齐

待写

2020-03-30 00:03:46 180

转载 C++类的存储空间及虚函数表

每个对象所占用的存储空间只是该对象的数据部分(虚函数指针和虚基类指针也属于数据部分)所占用的存储空间,而不包括函数代码所占用的存储空间虚函数内存空间虚函数表构造过程虚函数调用过程多重继承虚函数表多重继承函数调用...

2020-03-30 00:03:02 255

原创 类静态成员函数

静态数据成员可以作为成员函数的默认参数,但是普通成员不可以;类的静态成员函数只能访问类的静态成员,不能访问普通数据成员;静态成员函数末尾不能用const关键字修饰;静态数据成员和静态成员函数在类体之外初始化或定义时,去掉static关键字;...

2020-03-29 22:58:33 155

转载 类的自动转换和强制类型转换

1. 类的自动转换流程Temp t = 28.5;等价于:Temp t;{ Temp $temp(28.5); t = $temp;}2. 使用explicit关键字关闭隐式类型转换Temp t1 = 28.5; // errorTemp t2 = (Temp)28.5;Temp t3 = Temp(28.5);自动参数匹配及二义性3 将类的对象转换为基本数据类...

2020-03-29 22:17:49 140

原创 开源相关知识点

开源义务

2020-03-12 19:54:29 142

原创 x & (- x) 与 x & (x - 1)

x & (x - 1) 表示:消除x从右到左遇到的第一个1x & (- x)表示:x从右往左第一个1的位置为k,2^k

2020-03-12 18:53:56 145

原创 高级数据结构之leetcode315 -- 计算右侧小于当前元素的个数(拓展)

https://blog.csdn.net/haolexiao/article/details/54989306该题拓展为“计算右侧小于当前元素的所有元素和”“逆序对”二叉搜索树(BST)树状数组线段树归并排序变体...

2020-03-12 09:53:02 124

原创 函数调用栈原理

int A (){ int ret = B(); return ret;}栈向下生长寄存器ebp寄存器esp内存区域Text段:代码Data段:堆、栈、静态数据段BSS(Block Started by Symbol segment):初始化为0的全局变量...

2020-03-11 18:02:26 136

原创 十大排序算法

选择、冒泡(*)选择:依次找出最大值放在数组开始位置冒泡:遍历,比较相邻元素,最大值移到数组末尾插入(*)、希尔插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率。但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位。希尔排序是插入排序的一种,又称“缩小增量排序”归并(*)、快速堆计数(*)、桶(*)、基数(*)...

2020-03-10 10:41:50 108

原创 [转]虚函数表

待填写

2020-03-09 17:57:36 118 1

原创 gdb - 为程序设置运行参数

为程序传递参数5gdb --args factorial 5run 5 (gdb a.out r -p1 -p2)set args 5run

2020-03-09 15:02:55 199

原创 leetcode刷题总结 -- 图

421数组中两个数的最大异或值先建字典树,再挨个遍历num,按分支走到叶子,记录最大的ans332重新安排行程欧拉路径–1笔画问题两个关键点:1、给每个string编号,从0开始;2、从当前节点curr遍历,直到“无路可走”时,把curr加入ans。所经历的边一直处于pop状态662二叉树最大宽度二叉树的一个重要性质 node孩子编号与其自身编号关系, double处理溢出,list...

2020-03-07 18:35:42 247

原创 leetcode刷题总结 -- 动态规划

152乘积最大的连续子序列圈复杂度很高,不要遗漏分支vector<int> mx(len, 0);vector<int> mn(len, 0);213打家劫舍 II – 如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。vector<int> s(len, 0);vector<int> n(len, 0);...

2020-03-07 18:32:02 136

原创 leetcode刷题总结 -- 技巧

959由斜杠划分区域初始化 编号 把每个grid分割 有2种分法60第k个排列std::next_permutation(it1, it2, f);或者纯数学方法1297子串的最大出现次数 – 子串中不同字母的数目必须小于等于 maxLetters + 子串的长度必须大于等于 minSize 且小于等于 maxSize 。注意是子串,不是子序列!可以断定,在所有满足条件且出现次数最...

2020-03-07 18:31:17 221

原创 你真的理解C++智能指针吗?

智能指针就是一个类,当超出了类的作用域是,类会自动调用析构函数,析构函数会自动释放资源auto_ptr:已弃用shared_ptr:资源可以被多个指针共享,它使用计数机制来表明资源被几个指针共享weak_ptr:weak_ptr是用来解决shared_ptr相互引用时的死锁问题unique_ptr:...

2020-03-07 11:35:18 114

原创 c++委托构造

在以前的C++中,构造函数之间不能互相调用,所以,我们在写这些相似的构造函数里,我们会把相同的代码放到一个私有的成员函数中。class SomeType {private: int number; string name; SomeType( int i, string& s ) : number(i), name(s){}public: SomeType( ) ...

2020-03-07 11:25:13 273

转载 c++11 memory model

为什么需要memory order编译器出于优化的目的,在编译阶段将源码的顺序进行交换。程序执行期间,指令流水被CPU乱序执行。Cache的分层及刷新策略使得有时候某些写,读操作的顺序被重排。原子操作说的是,一个操作的状态要么就是未执行,要么就是已完成,不会看见中间状态。内存模型内存模型所要表达的内容主要是这么描述: 一个内存操作的效果,在其他线程中的可见性问题C++11 中的 ...

2020-03-07 11:06:41 203

转载 c++异常机制

执行throw语句时,throw表达式将作为对象被复制构造为一个新的对象,称为异常对象。异常对象放在内存的特殊位置,该位置既不是栈也不是堆,在window上是放在线程信息块TIB中。这个构造出来的新对象与本级的try所对应的catch语句进行类型匹配;本例中,依据score构造出来的对象类型为int,与catch(int score)匹配上,程序控制权转交到catch的语句块,进行异常处理代...

2020-03-07 10:46:27 126

原创 name mangling

C++编译链接模型中涉及到name mangling。基本支持函数重载的语言都需要进行name mangling。mangling的目的就是为了给重载的函数不同的签名,以避免调用时的二义性调用。...

2020-03-07 10:21:55 111

原创 gcc相关概念

1、gcc(GNU Compiler Collection)GNU编译器套件2、只有一个源文件时可以用gcc编译3、make-批处理工具:通过调用makefile文件中用户指定的命令来进行编译和链接。makefile文件中就包含了gcc指令4、makefile在一些简单地工程中可以手写,工程很大时,手写makefile非常麻烦.makefile可以调用shell脚本,但和shell脚本写法上...

2020-03-07 09:48:13 137

原创 leetcode刷题总结 -- O(n)问题

945使数组唯一的最小增量 [1 2 2] -> [1 2 3]排序 + 贪心策略最佳观光组合max(A[i] + A[j] + i - j), i < jdp[j] – 固定j时的得分;遍历j,记录[0, j - 1]中A[i] + i的最大值;爱生气的书店老板 – 窗口X内生气顾客总数, 找到生气顾客最多的窗口位置初始化[0, X -1]区间内生气客户数;滑动窗–用...

2020-03-06 20:35:03 2115

原创 leetcode刷题总结 -- 目录

前言提示语:编译出错、解答错误、执行出错、超出时间限制、超出内存限制、通过解释:“解答错误”:用例没完全通过“执行出错”:可能部分用例通过,但出现了某个用例使得程序运行异常,一般由于内存错误或者整数溢出,但不限于此。“通过”:65 (40 + 40 + 60)符合安全编码规范及通用编码规范如何拓展思路?深度理解leetcode平台上“标签分类”列表中所有名词,牢记于心。深入掌握C...

2020-03-06 16:05:12 375

转载 移动构造函数

https://blog.csdn.net/gxb0505/article/details/53572761如果指针所指向非常大的内存数据的话,则拷贝构造的代价就非常昂贵,会极大地影响性能。C++11提供一种简洁解决方法:移动构造函数,即是在用原对象指针对新对象指针进行赋值后,将原对象成员指针置为空指针,使得其无法指向内存数据,从而保证在析构的时候不会产生内存泄漏。这样既不用分配新内存,也不会产...

2020-03-05 18:09:14 342

原创 多线程并发

thread库在启动了一个线程(创建了一个thread对象)之后,创建thread线程对象,传入线程函数和参数,线程直接启动运行。当这个线程结束的时候(std::terminate()),我们如何去回收线程所使用的资源呢?thread库给我们两种选择:a.加入式(join())在调用线程中join(),等待线程执行完,main线程再继续运行;b.分离式(detach())。值得一提的是...

2020-03-05 17:44:27 103

原创 可重入函数与不可重入函数

主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。 也可以这样理解,重入即表示重复进入,首先它意味着这个函数可以被中断,其次意...

2020-03-05 17:42:06 115

原创 特征工程

数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已特征工程重要性: 特征越好,灵活性越强; 特征越好,模型越简单; 特征越好,性能越出色;...

2020-03-04 15:36:26 85

转载 二叉树前序、中序、后序遍历相互求法

前序遍历: 1.访问根节点 2.前序遍历左子树 3.前序遍历右子树中序遍历: 1.中序遍历左子树 2.访问根节点  3.中序遍历右子树后序遍历: 1.后序遍历左子树 2.后序遍历右子树 3.访问根节点 一、已知前序、中序遍历,求后序遍历例:前序遍历: GDAFEMHZ中序遍历: ADEFGHMZ画树求法:第一步,根据前序遍历的特点...

2020-03-03 19:51:01 120

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除