
C++
Name_seven
Is life always this hard,or is it just when you're a kid?
Always like this. ---Leon
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二叉搜索树
二叉搜索树1. 二叉搜索树的概念二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值并且它的左右子树也分别为二叉搜索树图例:2.二叉搜索树的创建,插入,查找,删除2.1 创建 二叉搜索树的创建,等同于二叉树的创建过程,区别是,在插入的...原创 2019-03-16 20:48:53 · 233 阅读 · 0 评论 -
实现一个不能被继承的类
题目:用C++设计一个不能被继承的类不能被继承?不能被继承?不能被继承?按照继承的理论知识分析,我们只要把类的构造函数设置为私有的,即可解决问题。因为那样的话,子类就没有办法访问基类的构造函数,从而就阻止了进行子类构造对象的任务实现,也就达到了不可继承的目的。但是,假设那样,这个类我们在其它地方怎么使用呢?那这样子给我们的利用也造成了一定的障碍。如何解决?可以定义静态方法(静态方法可以不用...原创 2019-10-04 15:02:16 · 231 阅读 · 0 评论 -
设计模式---观察者模式&&工厂模式
观察者模式:含义:观察者模式是一种对象行为模式。它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在观察者模式中,主体是通知的发布者,它发出通知时并不需要知道谁是它的观察者,可以有任意数目的观察者订阅并接收通知。也就是当被观察者状态变化时,通知所有观察者,这种依赖方式具有双向性,在QQ邮箱中的邮件订阅和RSS订阅,当我们浏览一些博客时,...原创 2019-10-04 14:30:22 · 473 阅读 · 0 评论 -
设计模式---单例模式
谈到单例模式,首先得了解一下什么是设计模式?设计模式:是一套被反复使用,为多数人知晓,经过分类的,代码设计经验的总结。就是前人采取的通用解决问题的方法,如同《孙子兵法》一样,是一种套路,做事模式。使用设计模式的目的:为了代码的可重用性,让代码更容易被他人理解,保证代码可靠性。设计模式使得代码编写工程化,更加规范化。单例模式:就是指一个类只能创建一个对象。单例模式可以保证系统中该类只有一...原创 2019-10-04 14:02:43 · 190 阅读 · 0 评论 -
数据结构二叉树常见面试题
题目:1. 求二叉树中的节点个数2. 求二叉树的深度3. 求二叉树中叶子节点的个数4. 求二叉树第K层的节点个数5. 前序遍历,中序遍历,后序遍历(递归版本,非递归版本)6. 分层遍历二叉树(按层次从上往下,从左往右)7. 将二叉查找树变为有序的双向链表8. 判断两棵二叉树是否结构相同9. 判断二叉树是不是平衡二叉树(AVL树)10. 求二叉树的镜像11. 求二叉树中两个节...原创 2019-10-03 22:41:02 · 1108 阅读 · 0 评论 -
C++内存管理
在C++中内存主要分为5个存储区域:栈区:局部变量,函数参数等存储在该区域,栈区由编译器自动分配和释放,内存空间是连续的,但是栈的内存空间有限。堆区:需要程序员手动分配和释放,属于动态分配方式。内存空间几乎没有限制,内存空间不连续,因此会产生内存碎片。操作系统有一个记录空间内存的链表,当收到内存申请时遍历链表,找到第一个空间大于申请空间的堆节点,将该节点分配给程序,并将该节点从链表中删...原创 2019-09-19 11:53:43 · 267 阅读 · 1 评论 -
智能指针
为什么会出现智能指针:智能指针是用来智能的管理指针指向的动态资源的释放。由于C++中没有内存的自动回收机制,因此,每次new出来的空间都需要delete,但是有些情况下,总是无法及时的delete,或者由于异常导致程序提早退出,造成内存泄露,因此为了解决内存泄露的问题,产生了智能指针。智能指针是将对内存的管理交付给对象,因此当对象析构时就能够清理资源,有效的避免内存泄露问题。智能指针的种类:...原创 2019-09-18 22:55:47 · 1163 阅读 · 0 评论 -
C++模拟实现string
模拟实现C++中的string类:传统版写法:拷贝构造+赋值运算符重载class String{public: //构造函数 String(const char* str = "") { //构造string对象时,如果传递的是nullptr指针,程序非法,此处需要断言 if(str == nullptr) { assert(false); return; ...原创 2019-09-18 00:30:08 · 456 阅读 · 0 评论 -
static的作用(5点)
C语言中:static修饰函数,改变了标识符(函数)的链接属性,使得函数的外部链接属性变成了内部链接属性,函数的存储类型和作用域不受影响,但是函数只能在当前源文件中使用,不能在其他源文件中使用。static修饰全局变量(代码块之外的变量),也是改变了全局变量的链接属性,由外部链接属性变成内部链接属性,使得该全局变量只能在当前源文件中使用,不能在其他源文件中使用。static 修饰局部变量(...原创 2019-08-17 16:45:05 · 332 阅读 · 0 评论 -
文件压缩-HuffMan压缩
什么是HuffMan压缩:简单来说就是利用Huffman树生成Huffman编码,对文件重复出现的字符进行记录,以减少出现次数。从而达到压缩文件的目的。什么是HuffMan树?定义: Huffman树,又称最优二叉树,是加权路径长度最短的二叉树。带权路径长度 = 节点的权值 * 当前节点距离根节点的路径长度如何构建HuffMan树?生成HuffMan编码HuffMan树中左子树路...原创 2019-08-01 15:12:01 · 1064 阅读 · 0 评论 -
LZ77文件压缩
LZ77文件压缩:所有的压缩算法 核心都是减少原文件在内存中的存储大小。无论哪一种压缩算法,都是对原文件中的内容进行了修改比如: 可以将重复的内容用更短的记录方法代替,或者将缩小原文件中字符的实际占用的比特位来减少了没用到的比特位。LZ77采用的压缩原理:就是将原文件中重复的内容用“长度距离对“进行替代,长度距离对是两个内容,即长度length,距离distance。距离表示,接下...原创 2019-04-01 22:44:33 · 792 阅读 · 0 评论 -
C++继承
继承内容:1.继承的概念与实现2.继承权限&访问限定符3.赋值兼容规则4.继承中的作用域(同名隐藏)5.派生类默认对象6.继承与友元7.继承与static静态成员8.继承体系下的派生类的对象模型1.继承的概念与实现继承:继承是代码实现复用的重要手段,在保持原有类(基类,父类)的基础上进行扩展,增加功能,这样产生的类是派生类。继承的格式:class 派生类 ...原创 2019-03-24 17:21:27 · 240 阅读 · 0 评论 -
实现只能在堆上创建对象&&实现只能在栈上创建对象
实现只能在堆上实现对象的创建:C++98中的实现方法: 只能在堆上创建对象----就是阻止在栈上创建空间。 实例化对象有两个过程:开辟空间 和 初始化对象----调用函数意味着在栈上开辟空间,所以只要阻止初始化,也就是禁止使用构造函数即可-----构造函数私有化,这样就在类外不能访问构造函数了---但是副作用是即使用new在堆上申请的空间也无法使用构造函数进行初始化了--...原创 2019-03-16 21:01:41 · 486 阅读 · 0 评论 -
模拟实现vector容器
//模拟实现vector#include <iostream>#include <assert.h>#include <algorithm>#include <string>using namespace std;namespace mylib{ template<class T> class Vector { ...原创 2019-10-04 19:49:27 · 249 阅读 · 0 评论