C++标准模板库STL

1 C++标准库介绍

C++标准库主要由以下几个组件构成:

C标准函数库;IO流;string;容器;算法;诊断支持; 在C++标准库中,实现容器和算法的部分就是标准模板库,其中迭代器让容器和算法这两部分共同工作。C++标准库的组成如图所示

STL是以模板的形式提供的编程组件,它解决了很多基础性的编程问题。STL由以下6部分组成

Containers(容器),用于管理数据集合,其包括各种数据结构,如vector,list,deque,set,map等。从实现的角度来看,STL容器是一种类模板。Algorithms(算法),包含各种算法,如sort,search,copy,erase等。Iterators(迭代器),提供遍历容器的方法,它扮演容器与算法之间的粘合剂,就是所谓的“泛型指针”。从实现角度来讲STL迭代器是一种将operator*,operator->,operator++,operator–等指针相关的操作重载的类模板。所以的STL容器都附有自己专属的迭代器。Functors(函数对象),将函数封装在对象中,供其他组件使用。行为类似函数,可以作为算法某种策略。从实现角度来看,它是一种重载了operator()的class 或者类模板,一般的函数指针可视为狭义的仿函数。Adapters(适配器),一种用来修饰容器、仿函数或迭代器的接口,如STL提供的queue和stack。虽然看似容器,其实只能算是一种容器适配器,因为它们底部完全借助deque。改变functor接口者称为function adapter,改变container接口者称为container adapter。Allocators(适配器):负责空间配置与管理,从实现角度看它是一个实现了动态空间配置、空间管理、空间释放的类模板。 STL的代码从广义上讲分为3类:算法、容器、迭代器。几乎所有的代码都采用了模板类和模板函数的方式。标准C++中,STL被分为13个头文件: ,,,,,,,,,,,, 2 迭代器示例 2.1 示例1 #include#includeint main(){ std::vector a; std::vector::const_iterator i; a.push_back(1); a.push_back(2); a.push_back(3); a.push_back(4); a.push_back(5); a.push_back(6); for (i = a.begin(); i != a.end(); ++i) { std::cout

比丘资源网 » C++标准模板库STL

发表回复

提供最优质的资源集合

立即查看 了解详情