随笔分类 -  C++

摘要:一、介绍   对于STL中的算法,我们都可以传递任何类别的 。对于一个对象或一个表达式,如果可以对其使用调用运算符,则称它为可调用的。即,如果e是一个可调用的表达式,则我们可以编写代码e(args),其中args是一个逗号分隔的一个或多个参数的列表。   一般 阅读全文
posted @ 2017-10-23 11:18 va_chester 阅读(1042) 评论(0) 推荐(0)
摘要:一、rand和srand   在C++11标准出来之前,C/C++都依赖于 头文件的 或者 来生成随机数。   其不是真正的随机数,是一个伪随机数,是根据一个数(我们可以称它为种子)为基准以某个递推公式推算出来的一系列数,当这系列数很大的时候,就符合正态公布, 阅读全文
posted @ 2017-09-27 22:16 va_chester 阅读(1641) 评论(0) 推荐(0)
摘要:一、简介   在C++语言中,异常处理包括: ,`try语句块 一套异常类`。其中,异常类用于在throw表达式和相关的catch子句之间传递异常的具体信息。exception头文件定义了最普通的异常类exception,它只报告异常的发生,不提供任何额外信息。以下是定义在std 阅读全文
posted @ 2017-09-26 22:41 va_chester 阅读(14188) 评论(2) 推荐(1)
摘要:一、简介   参考 "这篇博客" ,并且根据《C++ Primer》中相关知识,我总结了C++关于智能指针方面的内容。   为了解决 的问题,便出现了智能指针。STL提供的智能指针有:auto\_ptr,unique\_ptr,shared\_ptr和weak 阅读全文
posted @ 2017-09-24 23:10 va_chester 阅读(282) 评论(0) 推荐(0)
摘要:1. 单源最短路径 1.1 Dijkstra算法   给定一个有向图G = (V,E),每条边(i,j)上都标有非负实数C[i][j]作为它的权;在图中指定一个顶点v作为源点,求从v到其他每个顶点的最短路径长度。   为求最短路径,Dijkstra提出按路径长 阅读全文
posted @ 2017-04-22 14:16 va_chester 阅读(603) 评论(0) 推荐(0)
摘要:1. 拓扑排序   不存在有向环路的有向图称为无环路有向图。无环有向图可用于表示偏序集。设R是有穷集合X上的偏序关系,对X的每个v,用一个以v为标号的顶点表示,由此构成顶点集V。对R中任意一个序对(a,b),a不等于b,由对应的两个顶点建立一条边(a,b),由此构成边集E,则G= 阅读全文
posted @ 2017-04-21 15:54 va_chester 阅读(3552) 评论(0) 推荐(0)
摘要:无向图的双连通分量 1. 概念   设G=(V,E)是连通的无向图,如果V中顶点a是一个 ,若V中有顶点v,w使得v,w,a各不相同且v和w之间的每条路都包含a。换言之,如果删除a和与之相邻的所有边时,就会把图的一个连通分量拆分成多个连通分量。   而若对V中 阅读全文
posted @ 2017-04-20 20:30 va_chester 阅读(2316) 评论(0) 推荐(0)
摘要:1. 无向图与开放树   在讲最小生成树之前,先来说一说开放树。连通而无环路的无向图称做 。如果指定开放树中某一顶点为根,并且把每一条边看成是背离根的,则一棵开放树变成一棵树。 开放树有2个性质: 具有n =1个顶点的开放树包含n 1条边 如果在开放树中任意增加一条边,将构成一个 阅读全文
posted @ 2017-04-19 10:28 va_chester 阅读(303) 评论(0) 推荐(0)
摘要:深度优先搜索   设无向图G,其中的所有顶点都标记为“没访问过”。选择G中的一个顶点v作为搜索起点,将v标记为“访问过”。然后,递归地搜索与v相邻但没有访问过的顶点。当访问完从v能到达的所有顶点之后,如果G中还有没访问过的结点,则再选一个没访问过的顶点作为新的搜索起点。 算法如下 阅读全文
posted @ 2017-04-18 12:50 va_chester 阅读(267) 评论(0) 推荐(0)
摘要:  很多问题上,都可以借助图的理论来求解。图的概念,性质,实现,遍历等等都是极为重要的。这篇博客便是简单的介绍一下图如何用代码实现。 1. 基本定义   一个图 是由一个非空的有限顶点集V和一个边集E所组成的二元组。   若E中的每条边都是 阅读全文
posted @ 2017-04-17 17:27 va_chester 阅读(300) 评论(0) 推荐(0)
摘要:1. 定义 B树是一种平衡搜索树,但是在降低磁盘I/O操作数方面要做的更好一些,许多数据库也是使用B树或者B树的变体来存储信息。 一棵B树T是具有以下性质的有根树(根为T.root) 每个结点x有以下属性: x.n,当前存储在结点x中的关键字个数 x.n个关键字本身x.key1,x.key2,... 阅读全文
posted @ 2017-04-14 23:17 va_chester 阅读(234) 评论(0) 推荐(0)
摘要:  借鉴 "这篇博客" ,总结了Trie树的相关知识。 1. 概念   字典树(Trie)可以保存一些字符串 值的对应关系。基本上,它跟Java的HashMap功能相同,都是key value映射,只不过Trie的key只能是字符串。Trie来自单词"retr 阅读全文
posted @ 2017-04-14 16:22 va_chester 阅读(141) 评论(0) 推荐(0)
摘要:1. 概念   红黑树是一棵二叉查找树,它在每个结点上增加了一个存储为来表示结点的颜色,可以RED或BLACK。通过对任意一条从根到叶子的简单路径上各个结点的颜色进行约束,红黑树确保没有一条路径会比其他路径长出2倍,因而是近似于平衡。   树中每个结点都包含5 阅读全文
posted @ 2017-04-13 22:24 va_chester 阅读(311) 评论(0) 推荐(0)
摘要:1. 概念   之前的 "博客" 介绍过查找二叉树,在原始数据为有序序列的时候,建立的查找二叉树跟链表别无两样。由于这种情况下的查找二叉树完全倾斜,其平均查找时间和最坏查找时间都是O(n),显然效率很低。   究其原因,查找二叉树没有有效的机制来维持其的 。我 阅读全文
posted @ 2017-04-13 16:16 va_chester 阅读(196) 评论(0) 推荐(0)
摘要:参考 "这篇博客" ,再加上自己的一些理解,总结了一下。 1. 概念   哈希表也叫散列表,是一种查找算法,它尽量能不经过任何比较,通过一次存取就能得到所查找的数据元素。 因此需要存在一种映射关系,使每个关键字和哈希表中唯一一个存储位置相对应,这个映射关系叫做散列函数。 ![im 阅读全文
posted @ 2017-04-12 10:48 va_chester 阅读(288) 评论(2) 推荐(0)
摘要:参考了这篇 "博客" ,再加上自己的理解,总结了跳表的一些知识。 1. 概念   基于并联的链表,跳表是一种随机化的数据结构,在插入、删除、查找的复杂性都是O(logN)。它是链表的一种,只不过加入了跳跃功能,正是因为这个特性,使得它的查找复杂度是O(logN)。  & 阅读全文
posted @ 2017-04-11 22:41 va_chester 阅读(236) 评论(0) 推荐(0)
摘要:  这篇博客里我先是介绍了 什么是哈夫曼树 ,然后给出了 如何去构造 其的算法,接着引进 哈夫曼编码 ,最后拓展到了 动态哈夫曼树 。废话不多说,开始吧! 1. 什么是哈夫曼 要介绍哈夫曼树,得先了解几个概念: 扩充二叉树:在原来的二叉树(内结点)中出现空子树时,加上特殊的结点( 阅读全文
posted @ 2017-04-10 17:40 va_chester 阅读(849) 评论(0) 推荐(0)
摘要:选择树 概念:假设有k个已经排序的序列,并且想要将其合并成一个单独的排序序列。每个排好序的序列叫走一个 。 暴力算法:假设总共有n个数字,每次取k个归并串最小或者最大的一个数,比较k 1次得到所有数中最大或者最小的树,存入新空间中,接着一直这样比较...需要比较的次数是n (k 1) 选择树算法:可 阅读全文
posted @ 2017-04-10 10:02 va_chester 阅读(7029) 评论(0) 推荐(0)
摘要:1. 抽象数据型 操作 | 解释 | Parent(n,T) | 返回树T结点n的父亲 LeftMostChild(n,T) | 返回树T结点n的最左儿子 RightSibling(n,T) | 返回树T结点n的右兄弟 Data(n,T) | 返回树T结点n的DATA域的值 CreateK(v,T1 阅读全文
posted @ 2017-04-09 17:28 va_chester 阅读(170) 评论(0) 推荐(0)
摘要:1. 概念   二叉树是有限个结点的集合,这个集合或者是空集,或者由一个根节点和两棵不相交的二叉树组成,其中一棵叫做根的左子树,另一棵叫做根的右子树。    是高为k且有2^k 1个结点的二叉树。    是具有下述性质的二叉树: &emsp 阅读全文
posted @ 2017-04-09 13:22 va_chester 阅读(347) 评论(0) 推荐(0)