自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

转载 memcopy和memmove的区别(笔试,面试)

转载于:http://www.cnblogs.com/BeyondAnyTime/archive/2012/05/10/2495013.htmlMemcopy和memmove函数在linux下看了一下两个函数的源码。两个函数都在头文件string.h中定义,函数原型为:void * __cdecl memcpy ( void * dst,const void * src,size_t count);

2017-01-26 15:12:02 291

原创 Chapter 5: 关联式容器之 hashtable

\quadSGI 中的 hashtable 使用的是开链法(separate chaining)。这种做法是在每一个表格元素中维护一个 list;hash function 为我们分配某一个 list,然后我们在那个 list 身上执行元素的插入,搜寻和删除等操作。虽然针对 list 而进行的搜寻只能是一种线性操作,但如果 list 够短,速度还是够快的。一:hashtable 的桶子(bucket

2017-01-19 20:41:49 261

原创 Chapter 5:关联式容器之 map 和 multimap

一:map1:map的特性是,所有元素都会根据元素的键值自动被排序。map 的所有元素都是 pair,同时拥有实值(value)和键值(key)。pair 的第一元素被视为键值,第二元素被视为实值。map 不允许两个元素拥有相同的键值。pair 的定义代码如下:template <class T1, class T2>struct pair { typedef T1 first_type

2017-01-16 23:00:00 273

原创 Chapter 5: 关联式容器之 set 和 multiset

一:set1:set 的特性是所有元素都会根据元素的键值自动排序,并且 set 的实值就是键值,键值就是实值,同时 set 不允许两个元素有相同的键值;2:由于 set 元素值就是键值,而键值关系到 set 元素的排列规则,如果任意改变 set 元素值,会严重破坏 set 组织的,所以我们不可以通过 set 的迭代器改变 set 的元素值;3:由于红黑树(RB-tree)是一种平衡二叉搜索树,自动排

2017-01-16 20:59:54 228

原创 Chapter 5: 关联式容器之 RB_tree

一:红黑树需要满足的性质红黑树(RB-tree)不仅是一个二叉搜书树(binary search tree),还必须要满足如下的性质:每个节点不是红色就是黑色;根节点为黑色;如果节点为红,其子节点必须为黑;任一节点至 NULL (树尾端)的任何路径,所含之黑节点数必须相同;为方便起见,我们将NULL视为黑。二:RB-tree 的节点设计RB-tree 有红黑两色,并且拥有左右子节点。其节点

2017-01-15 14:23:43 314

原创 Chapter 4: 序列式容器之 heap and priority queue

一:heap1:heap 概述\quad1):binary max heap 表示的是用户可以以任何次序将任何元素推入容器内,但是每一次取出时取出的一定是优先权最高(也就是数值最高)的元素;同样的 binary min heap 表示的每一次取出的是优先权最低的元素;\quad2):binary heap 是一种 complete binary tree(完全二叉树),也就是说整棵 binary t

2017-01-12 10:20:04 299

原创 Chapter 4: 序列式容器之 stack 和 queue

一:stack1:stack 概述\quadstack 是一种先进后出的数据结构,它只有一个出口。stack 允许新增元素,移除元素,取得最顶端元素,但除了最顶端外,没有任何其它方法可以存取 stack 的其它元素,换言之,stack 不允许有遍历行为,因此 stack 没有迭代器;\quad将元素推入 stack 的操作称为 push,将元素推出 stack 的操作称为 pop。2:stack 定

2017-01-11 21:14:17 295

原创 Chapter 4:序列式容器之 deque

1:deque 与 vector 的区别deque 与 vector 的最大差异在于以下两点:deque 允许于常数时间内对起头端进行元素的插入与删除操作;deque 的空间是动态地以分段连续空间组合而成,随时可以增加一段新的空间链接起来,因此 deque 没有所谓的容量(capacity)概念,而 vector 被分配的空间是一段连续空间因此 像 vector 那样“因旧空间不足而重新配置一

2017-01-11 19:36:08 280

原创 Chapter 4: 序列式容器之 list

1:相比于 vector 的连续线性空间,STL 中的 list 的构造要复杂许多,为双向链表形式。vector 插入或删除元素需要移动多个元素,所花时间为 O(n),然而在 list 中每次插入或删除一个元素,就配置或释放一个元素空间,不需要移动其它元素,所化时间为 O(1);2:list 的节点(node)因为 list 为双向链表形式,所以 list 的节点中包含两个指针,一个指向其上游节

2017-01-10 11:40:54 300

原创 Chapter 4: 序列式容器之 vector

1:vector 的数据安排以及操作方式与 array 非常相似,但空间运用的灵活性就有差别。Array 是静态空间,空间一旦配置了就不能改变;然而 vector 是动态空间,它的内部机制能够自行扩充空间以容纳新元素;2:vector 的迭代器\quadvector 维护的是一个连续线性空间,所以不论其元素型别如何,普通指针都可以作为 vector 的迭代器而满足所有必要条件,所以 vector 的

2017-01-08 21:44:21 334

原创 Chapter 2:空间配置器 allocator

一:空间配置器的标准接口\quadSTL 规范规定了空间配置器 allocator 一定要有的一些接口,其中最重要的四个接口如下://配置空间,足以存储 n 个 T 对象;T* allocator::allocate(size_t n, const void* = 0)//归还先前配置的空间;void allocator::deallocate(T* p, size_t n)//在配置的指定空间

2017-01-03 19:35:49 402

空空如也

空空如也

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

TA关注的人

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