04 2014 档案
自己动手实现简单的Vector
摘要:看到今天,终于自己动手写了一个自己的vector,我这个版本的vector只有vector主要的一些操作,包括原版vector的所有构造函数,begin(),end(),size(),capacity(),empty(),erase(),clear(),pop_back,push_back(),重载...
阅读全文
浅析STL allocator
摘要:一般而言,我们习惯的 C++ 内存配置操作和释放操作是这样的:1 class FOO{};2 FOO *pf = new FOO; 3 delete pf; 我们看其中第二行和第三行,虽然都是只有一句,当是都完成了两个动作。但你 new 一个对象的时候两个动作是:先调用::operato...
阅读全文
STL中的Traits编程技法
摘要:最近在看读《STL源码剖析》,看到Traits编程技法这节时,不禁感慨STL源码作者的创新能力。那么什么是Traits编程技法呢?且听我娓娓道来: 我们知道容器的许多操作都是通过迭代器展开的。其中容器类似于数组,迭代器类似于指针。我们用数组来写个例子:1 int arr[5] = {1,2,3...
阅读全文
模板类的全特化、偏特化
摘要:我们先来定义一个普通的模板类1 template2 struct Test3 {4 Test(){ cout t1;4 Test t2;5 Test t3;6 return 0;7 }输出的结果1: 模板类 模板类 模板类如果我们这样写,再增加一个模板类 1 ...
阅读全文
自己动手实现智能指针auto_ptr
摘要:面试的时候,我们经常会被问到如何自己动手实现智能指针auto_ptr.今天我就一边参考STL库中的源代码,一边将auto_ptr的实现敲一遍。auto_ptr归根到底是一个模版类,那么这个类要实现哪些功能呢?如下:/* 一个智能指针应该有以下操作: 1.Auto_ptr ap; //...
阅读全文
各种排序算法的总结和比较(转)
摘要:各种排序算法的总结和比较1 快速排序(QuickSort)快速排序是一个就地排序,分而治之,大规模递归的算法。从本质上来说,它是归并排序的就地版本。快速排序可以由下面四步组成。(1)如果不多于1个数据,直接返回。(2)一般选择序列最左边的值作为支点数据。(3)将序列分成2部分,一部分都大于支点数据,...
阅读全文
C++中的 new / delete
摘要:new的3种形态: new operator , operator new , placement new 1.new operator: new操作符,像 + - * / && . :: ?: 等操作符一样,是语言内置的, 它 不能被重载,不能改变其行为。 它的行为包括分配内存的 operat...
阅读全文
自己动手实现Queue
摘要:前言: 看到许多面经说,有时候面试官要你自己当场用模板写出自己的vector容器。于是,我也琢磨着怎么自己动手写一个,可是本人才刚刚学C++模板编程不久,会的不多。不过,我恰好在C++ Primer上看到作者实现了自己的Queue,如果Queue自己实现了,相信Vector也不难了吧?当然这个Q...
阅读全文
数据库中索引的概念
摘要:1.索引与现实中的类比:数据库索引就好像是一本字典的目录,能加快数据库中记录的查询速度。比如我们要从一本字典中查找某个汉字。如果没有目录的话,意味着要将字典从头翻到尾一个字一个字的找,这样很浪费时间(平均要比较(n+1)/2次)。如果我们给个目录,先找在目录中找到这个的汉字。然后根据目录中该汉字的...
阅读全文
数据结构之图(图的基本操作)
摘要:由于图的基本操作的代码较多,我放到这一章来写。图可以用两种方法来存储,但是本人偏爱链表的表示方法,所以以下代码也都是是基于邻接链表的存储方式。 1 /* 2 以下存储结构参考严蔚敏版数据结构,不懂的可以翻阅查看 3 */ 4 const int UNDIGRAPH = 0; //无向图 5 const int DIGRAPH = 1; //有向图 6 const int MAX_VERTEX_NUM = 20; 7 8 typedef struct ArchNode 9 {10 int vertexIndex; //该弧指向顶点在图中顶...
阅读全文
数据结构之图(图的简介)
摘要:图的定义: 一个图G = (V,E)由顶点(vertex)集 V 合边(edge)集 E 组成。每条边(v,w)就是一个点对,其中v,w∈ V。有时也把边称作弧。如果点对是有序的,那么图就叫做有向图。顶点 v 和 w领接边 (v,w)∈ E。在一个具有边(v,w)从而具有边(w,v)的无向图,w和v邻接那v和w也邻接。图的基本术语:阶(Order):图G中顶集V的大小称作图G的阶。子图(Sub-Graph):G'称作图G=(V,E)的子图,当图G'=(V',E'),且V‘包含于V,E’包含于E。每个图都是本身的子图。生成子图(Spanning Sub-Graph
阅读全文
数据结构树之红黑树
摘要:红黑树简介: 红黑树是一棵二叉搜索树,它在每个结点上增加了一个存储位来表示结点的颜色,可以是RED 或 BLACK。通过对任何一条根到叶子的简单路径上各个结点的颜色进行约束,红黑树确保没有一条路径回避其他路径长处2倍,因而是近似平衡的。 树的每个结点包含 5 个属性:color,key,left,right和p。如果一个结点没有子结点或者父结点,则该结点相应的指针属性的值为NULL。我们可以把这些NULL视为指向二叉搜索树叶结点的指针,而把带关键字的结点视为树的内部结点。红黑树的性质: 一棵红黑树是满足下面红黑性质的二叉搜索树: 1.每个结点或是红色的,或是黑色的 2.根节点是黑色的...
阅读全文
浙公网安备 33010602011771号