STL源码剖析
文章平均质量分 78
tz_sz
这个作者很懒,什么都没留下…
展开
-
1 STL概论与版本简介
1 STL概论与版本简介1.8 SGI STL文件分布C++标准规范下的C头文件(无扩展名),如cstdio,cstdlib等;C++标准程序库中不属于STL范畴者,如stream,string;STL标准头文件(无扩展名),如vector,deque,list等;C++标准定案前,HP标准规范的STL头文件,如vector.h,deque.h等;SGI STL内部文件(S原创 2013-10-31 21:11:47 · 688 阅读 · 0 评论 -
7 仿函数
7.1 仿函数概念使用方法:greater ig;cout << ig(4,6); //常规用法cout ()(6,4); //使用临时对象。7.2 可配接的关键为了拥有可配接能力,每一个仿函数必须定义自己的相应型别。为了方便,定义了两个class,分别代表一元仿函数和二元仿函数(STL不支持三元仿函数)。任何仿函数,只有继承其中一个class,就可以获得相应型别,也就自动拥原创 2013-12-13 15:55:13 · 656 阅读 · 0 评论 -
6 算法(续)
6.7 其他算法(举例)1、简单算法2、其他转载 2013-12-13 14:56:34 · 509 阅读 · 0 评论 -
6 算法
6.3 数值算法-2、accumulatetemplate T accumulate(InputIterator first, InputIterator last, T init) { for ( ; first != last; ++first) init = init + *first; return init; //提供初始值init的作用:当区间为空时,依然可返原创 2013-12-11 09:14:09 · 586 阅读 · 0 评论 -
4 序列式容器
4 序列式容器4.2 vectortemplate class vector{ ... protected: iterator start; // 表示目前使用空間的頭 iterator finish; // 表示目前使用空間的尾 iterator end_of_storage;// 表示目前可用空間的尾 ...};成员函数举例:注意其中的内存管理原创 2013-11-13 15:00:39 · 502 阅读 · 0 评论 -
关联式容器-基于hash
5.7 hashtable1、碰撞问题的解决线性探测:负载系数在0-1之间(元素个数除以表格大小)。二次探测:如果位置已被占用,则依序尝试H+1^2, H+2^2, ... , H+i^2,而不是像线性探测那样尝试H+1, H+2 ... , H+i。开链法:负载系数大于1。2、哈希表的bucket和nodetemplate struct __hashtable_原创 2013-11-27 11:31:10 · 617 阅读 · 0 评论 -
5 关联式容器-set map multiset multimap
5.3 setset、multiset、map、maltimap都是以RB-tree为基础。为了效率,尽量使用成员函数find等,而不是STL算法。不能通过set的迭代器改变set的元素值,以防破坏排序规则。// 如果编译器不能根据前面模板参数推导出后面使用的默认参数类型,// 那么就需要手工指定, 本实作set内部元素默认使用less进行比较// 内部维护的数据结构是红黑树, 具有非原创 2013-11-24 18:25:18 · 661 阅读 · 0 评论 -
5 关联式容器——预备知识
5.1 树1、二叉搜索树任何节点的键值一定大于其左子树的每一个节点的键值,并小于其右子树的每一个节点的键值。插入:插入新元素时,从根节点开始,遇键值较大就向左,遇到键值较小者就向右,一直到尾端,即为插入点。删除:分两种情况。如果A只有一个子节点,就直接将A的子节点连至A的父节点,并将A删除。如果A有两个子节点,就以右子树内的最小节点取代A(右子树的最小节点为:从右子节点开始,一直向原创 2013-11-24 00:02:53 · 748 阅读 · 0 评论 -
2 空间配置器
2 空间配置器2.2 具备次配置力的SGI空间配置器SGI STL缺省使用alloc为配置器,而不是采用标准写法allocator,前者效率更高。1、构造和析构基本工具:constuct()和destroy()——(内部包含头文件,用于placement new)constuct()接受一个指针p和一个初值value,将初值设定到指针所指的空间上。destroy()有两个版原创 2013-11-03 16:44:04 · 545 阅读 · 0 评论 -
3 迭代器与概念和traits编程技法
3 迭代器与概念和traits编程技法每一种STL容器都有其专属迭代器。 3.4 Traits编程技法——STL源代码门钥template struct iterator_traits{ typedef typename I::iterator_category iterator_category; typedef typename I::value_type val原创 2013-11-06 10:14:59 · 534 阅读 · 0 评论 -
4 序列式容器(续)——container adapter
4.5 stacktemplate >class stack { // 以㆘的__STL_NULL_TMPL_ARGS 會開展為<>,見1.9.1 節 friend bool operator==__STL_NULL_TMPL_ARGS (const stack&, const stack&); friend bool operator<__STL_NULL_TMPL_ARG原创 2013-11-19 09:55:43 · 941 阅读 · 0 评论 -
8 配接器
8.1 分类1、应用于容器:stack、queue2、应用于迭代器:insert iterator(back_inserter、front_inserter、inserter)、reverse iterator、iostream iterator3、应用于仿函数:8.3 iterator adapter1、插入迭代器template class back_原创 2013-12-19 11:01:54 · 716 阅读 · 0 评论