随笔分类 - STL源码剖析
摘要:本文乃作者学习《C++标准程序库》的学习笔记,首先介绍了仿函数(函数对象)和函数适配器(配接器)的概念,然后列出STL中所有的仿函数,以及函数适配器,并摘录了几个例子演示仿函数和函数适配器的用法,最后讨论了仿函数的组合,以及实现方法。1.仿函数是什么东西?《C++标准程序库》里对仿函数的解释是:仿函...
阅读全文
摘要:sort()函数是C++中的排序函数其头文件为:#include头文件;qsort()是C中的排序函数,其头文件为:#include qsort()----六类qsort排序方法 qsort函数很好用,但有时不太会用比如按结构体一级排序、二级排序、字符...
阅读全文
摘要:迭代器是一种抽象的设计概念,现实程序语言中并没有直接对应于这个概念的实物。1 迭代器设计思维——STL关键所在不论是泛型思维或STL的实际运用,迭代器都扮演这重要的角色。STL的中心思想在于:将数据容器和算法分开,彼此独立设计,最后再以一贴胶着剂将它们撮合在一起。容器和算法的泛型化,从技术的角度来看...
阅读全文
摘要:1 空间的配置和释放,std::alloc对象构造前的空间配置和对象析构后的空间释放,由负责,SGI对此的设计哲学如下:向system heap要求空间考虑多线程状态考虑内存不足时的应变措施考虑过多“小型区块”可能造成的内存碎片问题C++的内存配置基本操作是::operator new(),内存释放...
阅读全文
摘要:以STL的运用角度而言,空间配置器是最不需要介绍的东西,它总是隐藏在一切组件(更具体地说是指容器,container)的背后,默默工作,默默付出。但若以STL的实现角度而言,第一个需要介绍的就是空间配置器,因为整个STL的操作对象(所有的数据)都存放在容器之内,而容器一定需要配置空间以置放资料。为什...
阅读全文
摘要:前开后闭开区间表示法[)任何一个STL算法,都需要获得由一对迭代器(泛型指针)所标示的区间,用以表示操作范围,这一对迭代器所标示的是个所谓的前闭后开区间,以[first,last)表示,也就是说,整个实际范围从first开始,直到last-1.迭代器last所指的是“最后一个元素的下一位置”。这种o...
阅读全文
摘要:increment/dereference操作符在迭代器的实现上占有非常重要的地位,因为任何一个迭代器都必须实现出前进(increment,operator++)和取值(dereference,operator*)功能,前者还分为前置式(prefix)和后置式(Postfix)两种。有写迭代器具备双...
阅读全文
摘要:如果class内含const static integral data member,那么根据C++标志规格,我们可以在class之内直接给予初值。所谓integral泛指所有的整数型别(包括浮点数),不单只是指int,下面是一个例子:#includeusing namespace std;temp...
阅读全文
摘要:所谓临时对象,就是一种无名对象。它的出现如果不在程序员的预期之下(例如任何pass by value操作都会引发copy操作,于是形成一个临时对象),往往造成效率上的负担。但有时候刻意制造一些临时对象,却又是使程序干净清爽的技巧。刻意制造临时对象的方法是,在型别名称之后直接加一对小括号,并可指定初值...
阅读全文
摘要:操作系统:centos 6.4STL源码版本:3.3前言: 要看一个项目的源码,首先要选中切入点。 那么在sgi stl 标准库中,其切入点是什么呢? 答案是:stl_config.h 文件。不同的编译器对C++语言的支持程度不尽相同。为了具备广泛移植能力,SGI STL 定义了一个环境组态文...
阅读全文
摘要:STL 提供六大组件,彼此可以组合套用:1 容器(containers):各种数据结构,如vector,list,deque,set,map,用来存放数据,从实现的角度来看,STL容器是一种class template,就体积而言,这一部分很像冰山在海角下的比率。2 算法(algorithms):各...
阅读全文

浙公网安备 33010602011771号