C++必知必会之(4)STL

来源:互联网 发布:马哥2016百度云python 编辑:程序博客网 时间:2024/06/06 03:08

STL并不仅仅是一个库,它更是一种优秀的思想以及一套约定。

STL包含三大组件:容器、算法、迭代器。

容器用于容纳和组织元素;算法执行操作;迭代器用于访问容器中的元素。

STL的优秀思想体现在:容器与在容器上执行的算法之间无需彼此了解,这种戏法是通过迭代器实现的。

迭代器类似于指针(实际上指针就是一种STL迭代器)。像指针一样,迭代器可以指向序列中的一个元素,也可以对其进行解引用,以便获得它所指向的对象的值。

STL迭代器既可以是预定义的指针,也可以是用户自定义的类类型。当然,这种类型需要重载适当的操作符,以便与预定义指针拥有相同的使用语法。

STL容器是对数据结构的一种抽象,以类模版的方式实现而成。

STL算法是对函数的一种抽象,采用函数模版实现。大多数STL算法用于处理一个或多个序列的值,其中每一个序列由一对有序的迭代器定义。其中第一个迭代器指向序列的第一个元素,第二个迭代器则指向序列最后一个元素之后的那个位置(而不是最后一个元素)。如果两个迭代器指向同一个位置,那么它们就定义了一个空序列。

一个容器可以生成一对迭代器来指定一个元素序列(可以是全部元素,也可以只是一个子区间),而算法则对该序列进行操作。算法和容器可以采用函数指针和函数对象根据需要进行定制,而这些函数对象又可以通过形形色色的函数对象适配器进行配接和联合。

容器也可以利用容器适配器进行配接,从而将容器的接口修改为栈、队列、优先队列。

容器和函数对象必须通过一套标准的嵌套类型名字对其自身进行描述。容器和函数对象适配器均要求成员函数具有特定的名字并包含特定的类型信息。算法要求传递给它的迭代器支持特定的操作并能够识别是什么样的操作。

由于STL是一个模版库,许多优化和性能调整可以在编译期进行。


原创粉丝点击