STL中六大组件的关系
2010-03-23 22:35
253 查看
六大组件:
容器(containers):各種資料結構,如 vector, list, deque, set, map,用来存放“元素”。就是template class。
演算法(algorithms):各種常用演算法如 sort, search, copy, erase,就是template class。
迭代器(iterators):是所謂的「泛型指標」,是㆒種將 operator*, operator->, operator++, operator-- 等指標相關操作予以多載化的 class template。所有STL 容器都附帶有自己專屬的迭代器 — 是的,只有容器設計者才知道如何巡訪自己的元素。原生指標(nativepointer)也是㆒種迭代器。
仿函式(functors):行為類似函式,可做為演算法的某種策略(policy),從實作的角度看,仿函式是㆒種重載了operator()的class 或class template。原生的函式指针可視為狹義的仿函式。
配接器(adapters):㆒種用來封装容器(containers)或仿函式(functors)或迭代器(iterators)介面的東西。例如 STL 提供的queue 和stack,雖然看似容器,其實只能算是㆒種容器配接器,因為它們的底部完全借重deque,所有動作都由底層的deque 供應。
配置器(allocators):負責空間配置與管理,從實作的角度看,配置器是㆒個實現了動態空間配置、空間管理、空間釋放的class template
之间关系:
空间配置器-->容器-->迭代器-->算法<--仿函式
算法需要使用迭代器和仿函式作为参数来运算。如:for_each(begin, end, print())。任何一个算法都需要迭代器提供一个容器中的“区间”来表示操作范围。这个区间是前闭后开(begin, end],即:包含begin但不包含end。
template
Function for_each(InputIterator first, InputIterator last, Function f)
{
for ( ; first != last; ++first)
f(*first);
return f;
}
许多算法都提供了两个版本,一个不包含“仿函式”用于缺省的算法,另一个包含“仿函式”(算子)用于用户自定义的“演算规则”。
配接器则对容器、迭代器、仿函式进行各种封装。
空间配置器为容器中的“元素”提供存储空间。
容器(containers):各種資料結構,如 vector, list, deque, set, map,用来存放“元素”。就是template class。
演算法(algorithms):各種常用演算法如 sort, search, copy, erase,就是template class。
迭代器(iterators):是所謂的「泛型指標」,是㆒種將 operator*, operator->, operator++, operator-- 等指標相關操作予以多載化的 class template。所有STL 容器都附帶有自己專屬的迭代器 — 是的,只有容器設計者才知道如何巡訪自己的元素。原生指標(nativepointer)也是㆒種迭代器。
仿函式(functors):行為類似函式,可做為演算法的某種策略(policy),從實作的角度看,仿函式是㆒種重載了operator()的class 或class template。原生的函式指针可視為狹義的仿函式。
配接器(adapters):㆒種用來封装容器(containers)或仿函式(functors)或迭代器(iterators)介面的東西。例如 STL 提供的queue 和stack,雖然看似容器,其實只能算是㆒種容器配接器,因為它們的底部完全借重deque,所有動作都由底層的deque 供應。
配置器(allocators):負責空間配置與管理,從實作的角度看,配置器是㆒個實現了動態空間配置、空間管理、空間釋放的class template
之间关系:
空间配置器-->容器-->迭代器-->算法<--仿函式
算法需要使用迭代器和仿函式作为参数来运算。如:for_each(begin, end, print())。任何一个算法都需要迭代器提供一个容器中的“区间”来表示操作范围。这个区间是前闭后开(begin, end],即:包含begin但不包含end。
template
Function for_each(InputIterator first, InputIterator last, Function f)
{
for ( ; first != last; ++first)
f(*first);
return f;
}
许多算法都提供了两个版本,一个不包含“仿函式”用于缺省的算法,另一个包含“仿函式”(算子)用于用户自定义的“演算规则”。
配接器则对容器、迭代器、仿函式进行各种封装。
空间配置器为容器中的“元素”提供存储空间。
相关文章推荐
- STL标准库六大组件 关系 作用
- STL源码解析1—六大组件关系
- STL提供六大组件以及彼此之间的关系
- 我眼中的STL六大组件的关系
- STL六大组件的交互关系
- 泛型编程、STL的概念、STL模板思想及其六大组件的关系,以及泛型编程(GP)、STL、面向对象编程(OOP)、C++之间的关系
- STL六大组件
- STL六大组件简介
- c++STL六大组件
- STL六大组件之——分配器(内存分配,好深奥的东西)
- 从零开始学C++之STL(一):STL六大组件简介
- [转贴]从零开始学C++之STL(一):STL六大组件简介
- STL的六大组件
- STL六大组件之(容器)
- STL六大组件
- STL六大组件之——容器知识大扫盲
- STL六大组件之——算法小小小小的解析
- STL各大组件及其关系
- STL学习—STL六大组件
- STL六大组件