基本没有使用各种virtual函数,继承等,主要是用templates制作出来的
2、STL六大部件分配器(allocator)、容器、迭代器、仿函数、算法、适配器
3、C++标准库和STL的关系C++标准库>STL,STL包含的是六大部件,C++标准库还包含其他一些东西
4、STL六大部件之间的关系-
容器:容器可以让我们不关注内存的管理,直接往里面添加元素,因此容器需要分配器的支持。
-
分配器:实现容器的内存管理。
-
算法:体现出与OOP的区别,和数据部分(容器)分离,面向对象的思想会将数据和函数放到类中包含。
-
迭代器:一种泛化的指针,实现对容器的查找等操作。
-
仿函数:函数功能,实现对象的加加减减等,概念性
-
适配器:可以对某些部件做一些转换,包括容器、仿函数、算法适配器
代码案例:
上图中包含了六大部件,可以初探到allocator的使用方法。
针对所有的容器,其迭代器的begin()和end()含义均为前闭后开,即begin()指向第0个元素,end指向最后一个元素的下一个位置。
Containerc; Container ::iterator iter = c.begin(); for (; iter != c.end(); ++iter) // 条件判断用!=,iter++一直到end,即遍历完所有元素
上图中,c.end()指向的位置为容器中最后元素内存空间的下一个位置,非容器空间。*(c.begin())为解引用,*(c.end())无效,因为c.end()位置的内存不属于容器本身。



