- 博客(11)
- 收藏
- 关注
原创 c++ primer 16章 模板与泛型编程
函数模板模板参数表示在类或函数定义中用到的类型或值,编译器使用实参的类型来确定绑定到模板参数的类型,编译器用推断出的模板参数来为我们实例化一个特定版本的函数类型参数类型参数可以用来指定 返回类型或 函数的参数类型,以及在函数体内用于变量声明或类型转换。 类型参数前必须使用关键字class或typename,这两个字含义相同,可以互换使用。非类型参数使用特定的类型名而非关键字来指定非类型参数。 非
2015-05-17 09:51:35
463
原创 STL源码剖析 第三章
iterators模式定义: 提供一种方法,使之能够依序寻访某个聚合物(容器)所含的各个元素,而又无需暴漏该聚合物的内部表述方式。3.1 迭代器设计思维——STL关键所在STL中心思想:将数据容器和算法分开,彼此独立设计,最后再以已贴粘着剂将他们撮合在一起3.2 迭代器是一种smart pointer迭代器是一种行为类似指针的对象,指针的最常见最重要的是内容提领(取出指标所指物体的内容)和
2015-05-14 23:01:55
463
原创 new 、operator new 和 placement new 区别
new: new operator,不能被重载,行为总是一致的。它先调用operator new分配内存,然后调用构造函数初始化那段内存。operator new:可以重载,但是不能在全局对原型为void operator new(size_t size)这个原型进行重载,一般只能在类中进行重载。如果类中没有重载operator new,那么调用的就是全局的::operator new来完成堆的分
2015-05-14 09:38:10
387
原创 算法导论 14章 数据结构的扩张
1、动态顺序统计 顺序统计树:向红黑树的结构中添加一个size域,表示包含自身节点的当前节点的子树节点的数目。修改后可以快速支持顺序统计量操作。 1)检索具有给定排序的元素 过程OS_SELECT(x,i)返回一个指向以x为根的子树中包含第小关键字的结点的指针,即为了找出顺序统计量树T中的第i小关键字。OS_SELECT(x,i) r = size[left[
2015-05-13 08:51:23
419
原创 算法导论 16章 贪心算法
贪心算法:每一步都作出当时看起来最佳的解活动选择问题贪心算法原理贪心算法性质 最优子结构 贪心对动态规划 0-1背包问题 分数背包问题赫夫曼编码拟阵和贪心算法
2015-05-13 08:44:04
626
原创 算法导论 11章 散列表
散列表是实现字典操作的一种有效数据结构散列表是普通数组概念的推广散列表使用一个长度与实际存储的关键字数目成比例的数组来存储,根据关键字计算相应的下标。直接寻址表缺点:(1)如果U很大,要保存|U|大小的一张表T有点不实际。(2)实际存储的关键字集合K相对U来说可能很小,因而分配给T的大部分空间都要浪费掉。散列表利用散列函数K计算出槽的位置。冲突:两个关键字可能映射到同一个槽中。冲突解决方法:
2015-05-13 08:38:24
626
原创 算法导论 14章 数据结构的扩张
本章介绍了两种红黑树的扩张一,动态顺序统计秩:在集合线性序中的位置,中序遍历树时输出的位置。顺序统计树:向红黑树的结构中添加一个size域,表示包含自身节点的当前节点的子树节点的数目。(1)查找给定秩的元素OS_SELECT(x,i) r = size[left[x]]+1; //先计算x的处于的位置 if i = r //x正好是第i小的关键字
2015-05-12 21:12:19
386
原创 算法导论 15章 动态规划
动态规划与分治法区别:动态规划应用于子问题重叠的情况(子问题是递归求解的),分治法会反复求解公共子问题,动态规划将子问题的解保存到表格中,无需重新计算。动态规划应用领域: 动态规划方法通常用来求解最优化问题。这类问题可以有很多可行解,每个解都有一个值,我们希望寻找具有最优值(最小值或最大值)的解。我们称呼这样的解为问题的一个最优解,而不是最优解,因为可能有多个解都达到最优值。动态规划的步骤:刻
2015-05-12 20:29:35
498
原创 算法导论 13章 红黑树
红黑树的性质1,每个节点非黑即红。2,根节点是黑色的。3,叶节点(NIL)是黑色的。4,红节点的两个孩子都是黑色的。5,对每个节点,从该节点到其所有后代的简单路径上,均包含了同样数目的黑节点。旋转为了维持红黑树的性质,要改变某些节点的颜色和指针结构,旋转改变了指针结构。左旋:以x和y之间的链为“支轴”进行的,使得x的右孩子为y的左孩子,y的父节点为x的父节点,y的左孩子为x。代码:te
2015-05-08 21:52:33
411
原创 struct和class的比较
区别一默认的继承访问权限 struct 默认权限publicclass 默认权限private区别二 “class”这个关键字还用于定义模板参数,就像“typename”。但关键字“struct”不用于定义模板参数。建议:struct作为数据结构的实现体class作为对象的实现体
2015-05-06 09:20:08
334
原创 算法导论 12章 二叉搜索树
最坏运行时间 完全二叉树 O_( lgn)线性链 O_(n) 随机构造 O( lgn) 平均时间O_(lgn)二叉搜索树性质左子树小于双亲,右子树大于双亲二叉搜索树的基本操作所花费的时间与这棵树的高度成正比。遍历 中序遍历 O_(n)子树根在左右之间伪代码:INORDER-TREE-WALK(x)if x!=NI
2015-05-06 08:54:05
238
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人