程序=数据结构+算法,STL实现了算法与数据结构的分离(解耦合,decouple).
一 iterator
stl中算法通过iterator作用于数据的线性区间(linear range).
iterator是类似于指针的东东.它有几种不同的类型(不是C++语言中的类型,是一种concept(约定)),分别提供各种层次的功能,以满足不同算法的需要.
比如:
input iterator
支持:
== * ++
不支持:
= -- > <
mutlipass(多次历遍)
同时拥有两个input iterator(不知道术语是什么,望大侠赐教)
等等,可以参见<泛形编程与STL>.
iterator_traits是用来定义iterator的指向物的数据类型的(听说0x标准会增加typeof,有了typeof是不是可以简化一下???who can tell me?).
iterator_traits中还有一项iterator_category,是一个空类的typedef,用来标识iterator的类型(如input iterator).
可以配合函数的重载,针对不同类型的iterator,写其最有效率的算法.
二 函数对象(function object)
"羊吃草"可以理解"将羊这个函数对象 通过吃这种算法 作用于草这个区间".
function object相当于羊,通过替换function object为牛,马,我们可以实现不同的目的(比如羊吃草是为了产毛,牛吃草是为了耕地,马吃草为了赶路).
function object中有一类叫做adaptable function object,它们作用类似iterator_traits,不过没有单独写成一个object.他们通过了自身参数和返回值的typedef.
可以用于function object adapter中,比如一个作用类似于"!"(not)的function object adapter.
stl中通过adaptable function object的基类,以方便使用.
刚看到这里,下次继续...................
分享到:
相关推荐
根据给定的文件信息,以下是对“精版Effective STL读书笔记”的详细解析,重点提炼了STL(标准模板库)中的关键知识点。 ### 标题:“精版Effective STL读书笔记” 此标题暗示了文档是针对《Effective STL》一书的...
这份“C++进阶STL源码笔记”显然是一个深入研究STL的资源,适合那些已经有一定C++编程基础的开发者,通过源码分析来提升对STL的理解和应用能力。以下将详细讲解STL中的关键组件和概念。 1. 容器: STL的核心组成...
集合运算在STL中可以通过算法库`<algorithm>`中的函数实现,如: - `includes(a, a_last, b, b_last)`:检查集合a是否包含集合b的所有元素。 - `set_union(a, a_last, b, b_last, res, res_last)`:将a和b的并集放入...
这篇学习笔记将深入探讨STL的核心概念、主要组件以及其在实际编程中的应用。 首先,STL的核心概念是容器、迭代器、算法和函数对象。容器是STL提供的一系列数据结构,如vector(动态数组)、list(双向链表)、set...
本次学习笔记将围绕STL中的一些容器和函数进行详细探讨,包括vector、set、string和map等常用容器的定义、操作方法和它们的常见用途。 首先,vector是一个可以动态增长的数组。在C++中,它支持随机访问,可以通过...
总结来说,C++/STL的学习涵盖了数据结构、算法、模板编程等多个方面,是一门深度与广度并存的课题。深入理解并掌握STL,将使你在C++编程中游刃有余,提升开发效率和代码质量。通过阅读和分析“STL”这个压缩包中的...
STL(Standard Template Library,标准模板库)是C++编程语言中的一个重要组成部分,它提供了一系列高效、可重用的容器、算法和迭代器等组件,极大地提升了C++程序员的生产力。下面将根据标题和描述,深入讲解STL的...
这份"C++进阶STL笔记资料"将详细讲解STL的各个方面,是深入学习和掌握C++进阶技巧的重要参考资料。通过阅读和实践,开发者不仅能熟悉STL的使用,还能理解其背后的设计思想,从而更好地应对复杂的编程挑战。
STL的主要目标是实现泛型编程,即编写与数据类型无关的代码。在这份“C++ STL 上课笔记”中,我们将深入探讨STL的各个关键组成部分,包括容器、迭代器、算法和函数对象。 1. **容器** STL提供了多种容器来存储和...
C++ Standard Template Library(STL)是C++编程语言的一个重要组件,它提供了一系列通用的数据结构和算法模板,使程序员能够以一种标准化和高效的方式处理数据。STL的主要组成部分包括容器(containers)、迭代器...
### Java编程思想读书笔记 #### 一、Java与C++的区别及内存管理 在学习Java的过程中,我们常常会拿它与C++进行比较。这两门语言虽然有着相似之处,但也有许多不同点。 1. **内存管理:** - C++提供了更为底层的...
内容概要:这篇PDF文档详细介绍了STL(Standard Template Library)的组成部分,包括容器、迭代器和算法,涵盖了STL的各种操作细节,如容器元素的要求、错误与异常的处理、各种容器的特性以及迭代器的应用等。...
侯捷——STL和泛型编程笔记1-4讲
### STL模板知识点笔记 #### 强大的软件复用技术与泛型编程 STL(Standard Template Library)标准模板库是C++中一个重要的组成部分,它提供了丰富的数据结构和算法实现,极大地提升了代码的复用性和可维护性。...
高质量c++编程(pdf和doc),Effective c++(chm),More Effective c++(doc和pdf),STL实践指南(doc),Effective STL(pdf),WindowsProgramming.chm,Effective STL读书笔记.doc<br>算法设计与分析.doc<br>
#### 泛型编程与STL STL的核心理念之一就是泛型编程(Generic Programming)。泛型编程强调算法和数据结构的分离,目标是创建可重用、高效且类型安全的组件。通过使用模板(Template),STL能够实现真正的泛型编程...
C++ STL(Standard Template Library,标准模板库)是一组广泛使用的C++编程语言模板,它包含了各种通用数据结构和算法的实现。STL允许程序员不必从零开始就能实现复杂的数据处理和操作,其主要组成部分包括容器、...
### 标准模板库(STL)学习笔记:深入解析list容器及STL算法 #### 一、引言 标准模板库(STL)是C++语言的重要组成部分,它为程序员提供了丰富的容器、算法和迭代器等功能,极大地提高了编程效率。本文将重点介绍STL中...
7. **STL与异常安全**:STL设计时考虑了异常安全,理解异常处理机制以及如何编写异常安全的代码是高级STL用户必备的知识。 8. **容器的内存管理**:STL容器如何进行动态内存分配和释放,例如vector的reserve方法...