胡小哲的博客

胡小哲

智能指针

智能指针定义为确保返回的资源总是被释放,我们需要将资源放进对象内,当控制流离开,该对象的析构函数会自动释放那些资源。 RAII : 资源获取即初始化1.获得资源后立刻放进管理对象。 2.管理对象运用析构函数确保资源被释放。所谓”智能指针”,其析构函数自动对其所指对象调用 delete。Auto...

2017-10-30 23:25:56

阅读数 222

评论数 0

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

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

2017-10-25 00:18:06

阅读数 733

评论数 0

模拟容器适配器栈和队列

在这里我们用模板参数和模板的模板参数完成适配器栈和队列。之前写过栈和队列,以及 vector 与 list 的的内容。 在这里我们直接使用vector作为模板的模板参数完成适配器栈, 用list作为模板的模板参数完成适配器队列。适配器栈:template<class T,class Co...

2017-10-23 23:21:19

阅读数 161

评论数 0

模拟实现list(迭代器)

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

2017-10-23 23:08:55

阅读数 159

评论数 0

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

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

2017-10-23 23:01:36

阅读数 130

评论数 0

二叉树创建与遍历

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

2017-10-16 19:45:37

阅读数 150

评论数 0

模板与泛型编程

一.概念模板是泛型变成的基础。泛型编程:编译与类型无关的代码,是一种复用的方式,模板分为模板函数和模板类。二.模板函数1.定义模板函数是一个通用的函数模板,而不是为每一种类型定义一个新函数,一个函数模板就像一个公式,针对不同类型函数生成不同的函数版本。关键字:template 以 templat...

2017-10-15 22:48:55

阅读数 152

评论数 0

C++中函数与虚函数

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

2017-10-13 12:44:42

阅读数 215

评论数 0

栈和递归解决迷宫问题

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

2017-10-12 21:25:39

阅读数 246

评论数 0

栈和队列

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

2017-10-11 22:55:04

阅读数 130

评论数 0

C++多态性

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

2017-10-11 15:39:25

阅读数 814

评论数 0

C++虚继承与虚函数

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

2017-10-03 21:11:34

阅读数 466

评论数 0

C++继承

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

2017-10-01 21:40:43

阅读数 154

评论数 0

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