资源描述:
《STL-标注模板库》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、STL(StandardTemplateLibrary)STL(标准模板库):是C++标准程序库的核心,是一个泛型程序库,提供了一系列软件方案,利用先进,高效的算法来管理数据。从程序员角度看,STL是由一些可适应不同需求的群集类别和一些能够在这些数据群集上运作的算法构成。STL内部的所有组件都由template构成,所以其元素可以是任意型别。STL组件:最关键的是容器,算法,迭代器STL的基本观念就是将数据和操作分离。数据由容器类别加以管理,操作则由可定制的算法定义之。迭代器在两者之间充当粘合剂,使任
2、何算法都可以和任何容器交互运作。STL将数据和算法分开对待,而不是合并考虑。从某种意义上说,STL的概念和面向对象程序设计(OOP)的最初思想是矛盾的。但是,这么做有很重要的原因:你可以将各种容器与各种算法结合起来,在很小的框架内拥有非常大的弹性。STL的一个根本特性是,所有组件都可以针对任意型别运作。STL还提供了更泛型化的组件,通过特定的配接器和仿函数,你可以补充,约束或定制算法,以满足特别需求。容器(Containers)容器:用来管理某类对象的集合。容纳特定数据类型对象的集合,STL容器是将最
3、常用的一些数据结构实现出来.包含了许多数据结构,如:vector,queue,statck…,string也可以看作是一个容器.分类:容器用来管理一组元素,为了适应不同需要,STL根据数据在容器中排列的特性,容器可分为序列式容器和关联式容器两种.序列式容器:可序群集,其中每个元素都有固定位置——取决于插入时机和地点,与元素的值没有关系,如果你以追加方式对一个群集置入n个元素,它们的排列次序将和置入次序一致。如vector,deque,list关联式容器:已序群集,元素位置取决于特定的排序准则,和插入顺
4、序无关。如果你将n个元素置入这样的群集中,它们的位置取决于元素值,和插入次序无关。STL提供了4个这样的容器:set,map,。multiset,multimap。关联式容器也可被视为特殊的序列式容器,因为已序群集正是根据某个排序准则排列而成。算法(Algorithms)算法:用来处理群集内的元素。它们可以出于不同的目的而搜寻,排序,修改,使用那些元素。是一种应用在容器上以各种方法处理其内存的行为或功能,如sort(排序),copy(拷贝)…,算法由模板函数体现,这些函数不是容器类的成员函数,是独立的
5、函数,它们可以用于STL容器,也可以用于普通的C++数组等.头文件:#include在STL的泛型算法中有4类基本的算法:1)变序型队列算法:可以改变容器内的数据;2)非变序型队列算法:处理容器内的数据而不改变他们;3)排序值算法:包涵对容器中的值进行排序和合并的算法,还有二叉搜索算法,4)通用数值算法:此种算法不多,涉及到专业领域中有用的算术操作,独立包涵于头文件中,在此不多做解释STL的算法并不只是针对STL容器,对一般容器也是适用的。变序型队列算法#inc
6、lude#include#include//下面用到了输出迭代器ostream_iteratorusingnamespacestd;intmain(void){intarr[6]={1,12,3,2,1215,90};intarr1[7];intarr2[6]={2,5,6,9,0,-56};copy(arr,(arr+6),arr1);//将数组aar复制到arr1cout<<"arr[6]copytoarr1[7],nowarr1:"<
7、(cout,""));//复制到输出迭代器swap_ranges(arr,arr+6,arr2);//交换arr和arr2序列cout<<""<<"arrswapedtoarr2,nowarr:"<8、ndl;copy(arr,arr+6,ostream_iterator(cout,""));cout<<""<<"arr2:"<(cout,""));return0;}非变序型队列算法#include#include#includeusingnamespacestd;intmain(void){i