Hashtable
2.1 简介
哈希表,又名散列表,可以提供“常数时间”的插入、删除、查询等操作。不同的元素通过hash function映射到不同的位置,但当不同元素获得经hash function获得相同的位置(索引)时,则发生“碰撞”,此时需要通过以下几种方法为新加入的元素寻找新的索引地址。
1、 线性探测法
由于为元素准备的为一块连续内存空间地址,该方法会循序...
分类:
其他好文 时间:
2014-09-06 22:35:54
阅读次数:
275
源码之前,了无秘密 ——侯杰第四章:序列式容器 C++语言本身提供了一个序列式容器array array:分配静态空间,一旦配置了就不能改变。 vector: 分配动态空间。维护一个连续线性空间,迭代器类型为:Random Access Iterato...
分类:
其他好文 时间:
2014-09-03 11:08:36
阅读次数:
231
今天在读《STL源码剖析》空间配置器第二级时看到了这句,有点不解,于是查阅后知:obj后面是个指针 STL_VOLATILE也应该是个类型定义的吧,程序中应该有define来对它定义。所以就是指针的指针。。指针,也就是地址,所以是__my_free_list是一个地址,*__my_free_list...
分类:
其他好文 时间:
2014-09-03 00:13:05
阅读次数:
420
源码之前,了无秘密。 --侯杰经典的书,确实每看一遍都能重新收获一遍:第一章:STL简介 STL的设计思维:对象的耦合性极低,复用性极高,符合开发封闭原则的程序库。 STL的价值:1.带给我们一套极具实用价值的零部件,以及一个整合的组织。 ...
分类:
其他好文 时间:
2014-09-02 22:41:15
阅读次数:
290
第二章:空间配置器 allocator SGI特殊的空间配置器,std::alloc SGI是以malloc()和free()完成内存的配置与释放。 SGI设计了双层级配置器: 第一级配置器直接使用malloc()和free(); _malloc_alloc_template ...
分类:
其他好文 时间:
2014-09-02 22:40:25
阅读次数:
237
第三章:迭代器概念与traits编程技法 迭代器是一种smart pointer auto_Ptr 是一个用来包装原生指针(native pointer)的对象,声明狼藉的内存泄漏问题可藉此获得解决。 auto_ptr用法如下,和原生指针一模一样:void func() { auto_p...
分类:
其他好文 时间:
2014-09-02 22:34:25
阅读次数:
266
STL标准中没有区分基本算法或复杂算法,单SGI把常用的一些算法定义在只中。在这些算法中,比较值得学习的是copy函数,它“无所不用其极”的改善效率。...
分类:
其他好文 时间:
2014-08-19 10:56:14
阅读次数:
320
SGI STL中的map底层以红黑树实现,hash_map以hash table实现。
hash_map不允许插入重新键值,hash_multimap允许插入重复键值。这两者的关系就像map和multimap的关系。底层的hash table提供的大部分的操作,hash_map(hash_multimap)大部分都是直接调用hash table的函数。...
分类:
其他好文 时间:
2014-08-18 18:45:49
阅读次数:
363
STL中的数值算法。包括累加、乘幂、计算差值。...
分类:
其他好文 时间:
2014-08-18 18:35:46
阅读次数:
217
STL只规定接口和复杂度,对于具体实现不作要求。set大多以红黑树实现,但STL在标准规格之外提供了一个所谓的hash_set,以hash table实现。hash_set的接口,hash_table都提供了,所以几乎所有的hash_set操作都是直接调用hash_table的函数而已。
除了hash_set,还有hash_multiset,它们两个的关系就像set和multiset的关系,一个不允许键值重复,另外一个允许键值重复。其他实现一样。...
分类:
其他好文 时间:
2014-08-18 09:15:43
阅读次数:
267