logo头像

野渡's小小知识乐园

《STL源码剖析》常见问题总结

《STL源码剖析》在学习完了之后也总结完了,但是感觉还是有些不太明白的地方,查了一些资料,总结了一下别人面试常遇到的问题,算是复习巩固,也是为了之后的找工作准备。…

《STL源码剖析》第7章 仿函数(函数对象)和配接器

所谓的仿函数(functor),是通过重载()运算符模拟函数形为的类。因此,这里需要明确两点: 1 仿函数不是函数,它是个类; 2 仿函数重载了()运算符,使得它的对你可以像函数那样子调用。 《Design Patterns》一书提到23个最普及的设计模式,其中对adapter样式的定义如下:将一个class的接口转换为另一个class 的接口,使原本因接口不兼容而不能合作的classes,可以一起运作。…

《STL源码剖析》第6章 算法

《STL源码剖析》第6章 算法

STL算法部分主要由头文件,,组成。要使用 STL中的算法函数必须包含头文件,对于数值算法须包含,中则定义了一些模板类,用来声明函数对象。…

《STL源码剖析》第5章 关联式容器

《STL源码剖析》第5章 关联式容器

所谓关联式容器,观念上类似于关联式数据库,每个元素都有一个键值key和一个实值value。当向容器插入元素时,容器根据其key值将实值放到适当的位置。关联式容器没有头尾的概念,所以也不会有push_front(),push_back()等操作函数。 STL关联容器分为set(集合)和map(映射表)两大类,及其衍生体multiset和multimap。这些容器的底层机制均以RB-tree(红黑树)实现。RB-tree也是一个独立容器,但并不开放使用。 SGI STL还提供一个不在标准规格的关联式容器 hash_table(散列表),以及以 hash_table 为底层机制而完成的 hash_set散列集合、hash_map散列映射表、hash_multiset散列多键集合、hash_multimap散列多键映射表。 本章我们将主要学习各种容器对应的底层实现原理和应该注意的地方。…

《STL源码剖析》第4章 序列式容器

《STL源码剖析》第4章 序列式容器

所谓序列式容器,其中的元素都可序,但未必有序,C++语言本身提供了一个序列式容器array,STL另外再提供vector、list、deque、stack、queue、priority-queue等序列容器。其中stack和queue由于只是将deque改头换面而成,技术上被归类为一种配接器。 本文将主要总结各种序列式容器的实现和用法。…

《STL源码剖析》第3章 迭代器与traits编程技法

《STL源码剖析》第3章 迭代器与traits编程技法

本节主要介绍迭代器和traits编程技法。 迭代器是一种模板class,迭代器在STL中得到了广泛的应用,通过迭代器,容器和算法可以有机的粘合在一起,只要对算法给予不同的迭代器,就可以对不同容器进行相同的操作。此外,迭代器本身也是一种设计模式,其设计思想也值得我们仔细体会。 traits编程技法主要是通过模板的类型推导和class内嵌类型定义从而获取并使用迭代器的所指对象的真正类型,比如作为返回值等。…

《STL源码剖析》第2章 空间配置器

《STL源码剖析》第2章 空间配置器

由于整个STL的操作对象都放在容器内,而容器需要配置空间以放置数据,学习空间配置器的原理是掌握其它部分知识的基础。 为什么不说allocator是内存配置器而说它是空间配置器呢?这是因为空间配置器的配置不一定是内存,其实也可以是磁盘或者其他辅助存储介质。我们也可以自己实现空间配置器,只需要自己对应实现相应的标准接口即可。…