自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

胡小哲的博客

胡小哲

  • 博客(13)
  • 收藏
  • 关注

原创 智能指针

智能指针定义为确保返回的资源总是被释放,我们需要将资源放进对象内,当控制流离开,该对象的析构函数会自动释放那些资源。 RAII : 资源获取即初始化1.获得资源后立刻放进管理对象。 2.管理对象运用析构函数确保资源被释放。所谓”智能指针”,其析构函数自动对其所指对象调用 delete。Auto_ptr:1.资源转移顾名思义,当另一个指针或对象来管理这一块空间时,将这块空间的拥有者改变为当前要进行

2017-10-30 23:25:56 326

原创 使用堆栈(Stack)模拟实现队列(FIFO)

使用堆栈(Stack)来模拟实现队列(FIFO)功能,要求数据必须存储再堆栈内部。 需要实现: enqueue(入队) dequeue(出队) Empty(判空)因为堆栈和队列的线性运算不同,在这里只使用一个堆栈是不够的,我们可以用两个堆栈联合完成队列的模拟。 当入队时,将入队的所有元素压入堆栈 stack1 中。 当出队时,将 stack1 中的所有元素压入 stack2 中,如果此时

2017-10-25 00:18:06 4572

原创 模拟容器适配器栈和队列

在这里我们用模板参数和模板的模板参数完成适配器栈和队列。之前写过栈和队列,以及 vector 与 list 的的内容。 在这里我们直接使用vector作为模板的模板参数完成适配器栈, 用list作为模板的模板参数完成适配器队列。适配器栈:template<class T,class Container = List<T>>class Queue{public: Queue()

2017-10-23 23:21:19 254

原创 模拟实现list(迭代器)

list同vector类似,都是库提供的众多容器中的一个。同时list 以模板方式实现,可以处理任意型别的变量,包括使用者自定义的资料型态。 在编程语言中List 是标准类库中的一个类,可以简单视之为双向链表,以线性列的方式管理物件集合。和vector不一样的是,list不支持对元素的任意存取。list中提供的成员函数与vector类似,不过list提供对表首元素的操作push_front、pop

2017-10-23 23:08:55 348

原创 模拟实现vector(迭代器,类型萃取)

vector是C++标准库中的部分内容,是一个多功能,能够操作多种数据机构和算法的模板类和函数库。 vector被认为是一个容器,是因为它能像容器一样存放各种类型的对象,能够存放任意类型的动态数组,能够增加和压缩数据。 适合用顺序表实现:#include<assert.h> #include<iostream> using namespace std;struct TrueType

2017-10-23 23:01:36 426

原创 二叉树创建与遍历

二叉树的创建定义:二叉树是每个节点最多有两个子树的树结构。通常子树被称为”左子树”和”右子树”。二叉树的每个节点最多只能右两棵子树,子树有左右之分,次序不能颠倒。概念:1.满二叉树:除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。2.完全二叉树:假设二叉树的高度为K,除第K层外,其他各层的节点数都达到最大个数。也就是第一层到第K-1层为一个满二叉树。第K层有叶子节点,并且叶子结点都

2017-10-16 19:45:37 668

原创 模板与泛型编程

一.概念模板是泛型变成的基础。泛型编程:编译与类型无关的代码,是一种复用的方式,模板分为模板函数和模板类。二.模板函数1.定义模板函数是一个通用的函数模板,而不是为每一种类型定义一个新函数,一个函数模板就像一个公式,针对不同类型函数生成不同的函数版本。关键字:template 以 template 开始,后面跟一个模板参数列表(一个逗号分隔的一个或多个模板参数的列表)。template<typen

2017-10-15 22:48:55 317

原创 C++中函数与虚函数

需要声明为虚函数:基类的析构函数需要声明为虚函数: 当 derived class 对象经由一个base class指针被删除,而该base class带着一个non-virtual析构函数,实际执行时通常发生的是对象的derived成分没有被销毁。(局部销毁)class Base{public: Base() :_b(1) { cout <<

2017-10-13 12:44:42 420

原创 栈和递归解决迷宫问题

先给出一个迷宫的模型。0代表通路,1代表墙壁,知道出入口后,找到入口到出口之间的通路。 先给出一个简单迷宫模型 现在令下方为出口方向,[2,0]作为入口寻找通路。将走过的路程标记为2。 此时可以发现迷宫存在一个分叉口,假如以顺时针方向对是否存在通路进行判别,则必定会先走没有出口的那一条死路,而当走进死路时,需要进行回溯。 此时可以开辟一个栈用来维护这条通路,先将入口进行压栈,随后判别通路

2017-10-12 21:25:39 566

原创 栈和队列

1.栈栈,又名堆栈,是一种运算受限的线性表,因为其仅允许在表的一端进行插入和删除。这一端被称为栈顶,相应的另一端被称为栈底。 按照先进后出的原则存储数据,最先进入的数据被压入栈底,最后进入的数据在栈顶。读取数据的时候从栈顶开始弹出数据。栈具有记忆作用,对栈插入与删除不需要改变栈底指针。示意图: 栈的基本运算: 构造空栈:Init(S)、判空: Empty(S)、判满: Full(S)、进栈:

2017-10-11 22:55:04 326

原创 C++多态性

概念: 多态,按照字面意思就是多种形态。在面向对象语言中,接口的多种不同实现方式即为多态。允许你将父类对象指向一个或更多其他的子类对象,赋值后,父类对象可以根据当前赋值给他的子对象的特征,从而以不同方式运转。 静态多态: 在系统编译期间就可以确定程序执行到这里将要执行哪个函数; 比如 函数的重载 以及 泛型编程。 动态多态: 利用虚函数实现了运行时的多态,也就是说在系统编译的时候并不知道

2017-10-11 15:39:25 1518

原创 C++虚继承与虚函数

虚继承在菱形继承中出现的数据二义性问题,使得数据访问时变得复杂,并且导致了数据冗存。虚继承则解决了从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题。关键字:virtual用法:将共同基类声明设置为虚基类,这时从不同路径继承过来的同名数据成员在内存中只有一份,同一个函数名也只有一个映射。语法: class 派生类: virtual 基类1,virtual 基类2,…,virtu

2017-10-03 21:11:34 2223

原创 C++继承

继承的概念: 通过继承机制,可以利用已有的数据来定义新的数据类型。新的数据类型不仅拥有新的成员,同时也拥有旧的成员。我们称已经存在的用来派生新类的类为基类,也称父类。由已存在的的类派生出的新类为派生类,也称子类。是面向对象复用的重要手段。基类:基类负责定义在各层次关系中所有类的共同成员。派生类:派生类负责定义各自特有的成员。class Person //父类/基类{private:

2017-10-01 21:40:43 259

空空如也

空空如也

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

TA关注的人

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