
STL 源码剖析
文章平均质量分 64
独孤_子喻
艰难困苦如同欢乐,终将成为人生最后的财富。
展开
-
一 STL概论与版本简介
STL 源码剖析 苞丁解牛,恢恢乎游刃有余第一章 STL概论与版本简介1.9.2 临时对象的产生与应用1、刻意产生临时对象:在型别名称后直接加一对小括号,并指定初值,如 shape(3,5)或 int(8);,调用相应的constructor且不指定对象的名称。及创建匿名临时对象。在STL中此技巧常用于仿函数与算法的搭配上。2、静态常数整数(static const i原创 2014-09-10 16:36:07 · 448 阅读 · 0 评论 -
五 关联式容器 associative containers
第五章: 关联式容器 associative containers1、标准STL的关联容器: set multiset(多键集合) map(映射表) multimap(多键映射表)这些容器的底层机制都是RB_Tree(红黑树)完成。RB_Tree也是一个独立容器,但不开放给外界使用。2、此外,SGI STL还提供了一些关联容器:hashtable(散列表,已引入C++1原创 2014-09-10 16:42:34 · 847 阅读 · 0 评论 -
六 算法
第六章:算法for_each():为非质变算法,即不能通过该算法改变元素的值。 Lower_bound():在有序区间查找不小于value值得最小位置。返回迭代器Upper_bound():在有序区间查找不大于value值的最大位置。返回迭代器Binary_search():在有序区间查找不小于value值得最小位置。返回bool值:其内部调用lower_bound(),在查看原创 2014-09-10 16:45:28 · 387 阅读 · 0 评论 -
七 仿函数 functors
第七章:仿函数 functors1、STL算法接受一个函数指针或者仿函数对象作为其一个参数。但是普通函数指针不具备可配接能力。2、STL仿函数分类:按操作数个数分为 一元仿函数、二元仿函数。(STL不支持三元仿函数)。按功能:可分为 算术运算、关系运算、逻辑运算。 要使用STL的内建仿函数,需含.3、为了使仿函数具有可配接能力,每个仿函数需要定义自己的相应型别,如同迭代器原创 2014-09-10 16:47:46 · 583 阅读 · 0 评论 -
八 配接器
第八章:配接器配接器都是仿函数,把被配接的对象经过改变接口以适合某种需要而来。为了方便使用,一般都为每个配接器仿函数提供一个辅助函数,以供外界调用。8.1、配接器分类: Functionadapter:改变仿函数接口Contianer adaper:改变容器接口:如 queue stackItearor adapter:改变迭代器接口: 1、Itearor ada原创 2014-09-10 16:49:52 · 554 阅读 · 0 评论 -
二 内存分配
内存基本处理工具:STL定义了五个全局函数,作用于未初始化空间上。这在容器的实现上很有帮助。Construct():用于构造Destroy():用于析构Uninitialized_copy():POD:直接用STL算法copy();non_POD:单个元素构造construct().对char*类型元素,直接内存底层操作快速移动:memmove()效率极高Uninitializ原创 2014-09-10 16:53:57 · 487 阅读 · 0 评论 -
三 迭代器(iterator)概念与traits编程技法
第三章 迭代器(iterator)概念与traits编程技法设计模式中,iterator模式的定义: 提供一种方法,使之能偶依序巡访聚合物(容器)的所含各个元素,而又无需暴露该聚合物的内部表达式。每一种STL容器都提供有专属迭代器。1、如何获取 迭代器相应型别(五种) 如:迭代器所指对象的型别(可用 模板函数的参数推导机制获取),而更加全面的解法 Traits编原创 2014-09-10 16:37:19 · 744 阅读 · 0 评论 -
四 序列容器
第四章:序列容器1、序列容器:其中的元素都可有序,但未必有序。2、C++语言本身内置了序列容器:array。STL提供的序列容器:vector list deque,stack,queue,priority_queue. 其中stack queue只是对deque的包装,技术上称为配接器。 4.2、Vector:1、实现的关键技术在于:对其大小的控制以及重新配置时原创 2014-09-10 16:39:38 · 430 阅读 · 0 评论