STL 之 hash_map源代码剖析】的更多相关文章

// Filename: stl_hash_map.h // hash_map和hash_multimap是对hashtable的简单包装, 非常easy理解 /* * Copyright (c) 1996 * Silicon Graphics Computer Systems, Inc. * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any p…
// Filename: stl_hashtable.h //////////////////////////////////////////////////////////////////////////////// // 本实作的hashtable採用的是开链法, 其内存布局例如以下 //////////////////////////////////////////////////////////////////////////////// // 对于产生哈希冲突的结点, 我们採取在其位置…
<<STL源代码剖析>> 侯捷著 非常早就买了这本书, 一直没看, 如今在实验室师兄代码的时候发现里面使用了大量泛型编程的内容, 让我有了先看看这本书的想法. 看之前我对于泛型编程了解甚少, STL倒使用的比較熟练. 看完这本书之后, 仅仅能表示曾经对于STL的使用真是跟小孩玩似得, 仅仅懂其冰山一角. 在真正的深入到源代码之后, 对于STL中不easy理解的部分如 迭代器(iterator), 仿函数(functor), 配接器(adapter)才有了一个彻彻底底的了解, 这样的…
Allocaor allocator 指的是空间配置器,用于分配内存.STL中默认使用SGI STL alloc作为STL的内存分配器,尽管未能符合标准规格,但效率上更好.SGI STL也定义有一个符合标准,名为allocator的配置器,但SGI自己从未使用过它,主要原因是它仅仅把C++的new操作符和delete操作符做了一层薄薄的封装. C++的new操作符和delete操作符进行内存配置时,new:先配置内存,然后构造对象.delete:先析构对象,然后释放内存.SGI STL将内存配置…
前言 在前面的博文中剖析了STL的数值算法.基本算法和set集合算法.本文剖析STL其它的算法,比如排序算法.合并算法.查找算法等等.在剖析的时候.会针对函数给出一些样例说明函数的使用.源代码出自SGI STL中的<stl_algo.h>文件.注:本文的源代码许多,可能兴许博文会对这些算法进行归类分析. STL算法剖析 #ifndef __SGI_STL_INTERNAL_ALGO_H #define __SGI_STL_INTERNAL_ALGO_H #include <stl_hea…
前言 在STL中.算法是常常被使用的,算法在整个STL中起到很关键的数据.本节介绍的是一些基本算法,包括equal.fill.fill_n,iter_swap.lexicographical_compare.max,min.mismatch,swap,copy,copy_backward.copy_n.当中一个比較重要的算法就是copy.针对copy的剖析在源代码中能够看到具体的注解. 本文剖析的源代码出自SGL STL中的<stl_algobase.h>文件. 基本算法剖析 #ifndef…
看完,<STL源代码剖析>---stl_deque.h阅读笔记(1)后.再看代码: G++ 2.91.57,cygnus\cygwin-b20\include\g++\stl_deque.h 完整列表 /* * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use, copy, modify, distribute and sell this software * and its documentation f…
前言 本节介绍set集合的相关算法,各自是并集set_union,差集set_difference,交集set_intersection 和对称差集set_symmetric_difference.这是个函数都提供了两个版本号的函数原型:第一个版本号是採用默认的排序比較方式operator<:第二个版本号是用户通过仿函数comp自行指定排序方式.注意:这四个算法接受的输入区间都是有序的,输出也是有序的. 以下对set算法进行剖析,详细凝视详见源代码,同一时候给出样例说明该算法的功能.本文源代码摘…
提要 先看一段用迭代器的代码: int a[] = {1, 2, 3, 4, 5}; vector<int> v1( a, a+5); vector<int>::iterator iter = v1.begin( ); for (; iter != v1.end( ); ++iter) { cout << *iter << " "; } cout<<endl; STL的中心思想在于:将数据容器(containers)和算法(a…
菜鸟nginx源代码剖析数据结构篇(一)动态数组ngx_array_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csdn.net/chen19870707 Date:October 20h, 2014 1.ngx_array优势和特点 ngx_array _t是一个顺序容器.支持达到数组容量上限时动态改变数组的大小,类似于STL中vector.具有下面特性: 下标直接索引.訪问速度快 动态增长 由slab内存池统一…