STL简介
- STL六大部件
- 容器 (class template)
- 分配器(为容器服务,class template)
- 算法 (function template)
- 迭代器(泛化的指针,容器和算法之间的桥梁)(class template)
- 适配器 (class template)
- 仿函数 (class template),为算法提供服务。
-
数据和操作放在一起就是走 OOP类 道路,数据和操作分开 走的就是 GP泛型编程 的道路,迭代器就是数据和操作之间的桥梁。(可以闭门造车)
- 【begin , end)容器是前闭后开区间的设计
- c++标准库之必要基础:操作符重载,模版。
- 特化:一个模版,传一个特定类型有特定的版本。
- 偏特化:如果一个模版如果需要两个模版参数,传了第一个特定类型;如果一个模版需要一个模版参数是任意类型T,将某个参数特化为指针泛型T*,就是范围的偏特化将任意类型编特化为指针类型。个数的偏特化,范围的偏特化。
- iterator是一个类,设计了大量的操作符重载,使得它的行为更像指针(smart pointers)。iterator 有五个typedef,定义了一些属性iterator_category(iterator类别),difference_type(两个iterator之间的距离),value_type(iterator所指元素的type)等.
- 标准库的算法会问iterator的一些属性,iterator会回答。但是如果类型就是一个native指针,不是iterator,算法怎么提问?加一个中间层。Traits技法, iterator Traits技法用于分开class iterator 和 non-class iterator。traits类的设计借助了模版偏特化的特性。
- 标准库存在很多类型的traits,如type traits,iterator traits,char traits,allocator traits等。
- 迭代器以指针为塑形,设计了大量的操作符重载,使得它的行为更像指针,迭代器含有配合容器使用的一些数据。