欢迎来到天天文库
浏览记录
ID:49377144
大小:287.00 KB
页数:128页
时间:2020-02-05
《标准模板库STL.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第12章标准模板库STL标准模板库(StandardTemplateLibrary,简称STL)是ANSI/ISOC++最有特色、最实用的部分之一。标准模板库STL主要包括:容器(Containers)算法(Algorithms)迭代器(Iterators)函数对象(FunctionObjects)适配器(Adaptors)内存配置器(Allocators)标准模板库STL主要由6大组件组成:(1)容器(Containers)。包括各种基本数据结构的类模板。STL容器部分主要由头文件、、、2、>、、和组成。(2)算法(Algorithms)。包括各种基本算法,如比较、交换、查找、排序、遍历操作、复制、修改、移除、反转、合并等等。STL算法部分主要由头文件和组成。12.1标准模板库STL概述(3)迭代器(Iterators)。迭代器是面向对象版本的指针,如同指针可以指向内存中的一个地址,迭代器可以指向容器中的一个位置。STL的每一个容器类模板中,都定义了一组对应的迭代器类,用以存取容器中的元素。这样,在STL中迭代器就将算法和容器联系起来了,通过迭代器3、,算法函数可以访问容器中指定位置的元素,而无需关心元素的具体类型。STL迭代器部分主要由头文件和组成。(4)函数对象(FunctionObjects)。一种行为类似于函数的class,实现技术上是一个改写了“calloperator()”的class。STL提供15个预定义的Functionobjects。头文件中定义了一些类模板,用以声明函数对象。(5)适配器(Adaptors)。简单地说就是一种接口类,专门用来修改现有类的接口,提供一种新的接口;或调用现有的函数来实现所需要4、的功能。主要包括3种适配器ContainerAdaptors、IteratorAdaptors与FunctionAdaptors。其中迭代器适配器的定义在头文件中,函数适配器的定义在头文件中。(6)内存配置器(Allocators)。为STL提供空间配置的系统。头文件中的主要部分是模板类allocator,它负责产生所有容器中的默认分配器。容器使用allocator完成对内存的操作,allocator提供内存原语以对内存进行统一的存取。STL六大组件的交互关系容器通过内存配置器取5、得数据存储空间,算法通过迭代器存取容器的内容,函数对象用在和算法的结合中,协助算法完成不同的策略变化,从而扩展算法的效用。适配器可以对容器和迭代器的接口进行转换、修饰或套接函数对象。例12-1一个简单的STL应用示例#include#include#include#includeusingnamespacestd;intmain(){intia[]={34,18,23,89,40,15,56,14,41,24};vector6、t>>vec(ia,ia+10);//将vec声明为元素为int类型的向量容器vector::iteratorit;//将it声明为int类型的向量容器的迭代器。intnum;sort(vec.begin(),vec.end());for(it=vec.begin();it!=vec.end();it++)cout<<*it<<"";//14151823243440415689cout<7、_equal(),40));cout<<"小于等于40的数有"<8、多种数据类型上进行操作,在泛型化程序设计思想里,大部分基本算法被抽象,被泛化,独立于与之对应的数据结构,用于以相同或相近的方式处理各种不同情形。算法是泛型的,不与任何特定的数据结构或对象类型系
2、>、、和组成。(2)算法(Algorithms)。包括各种基本算法,如比较、交换、查找、排序、遍历操作、复制、修改、移除、反转、合并等等。STL算法部分主要由头文件和组成。12.1标准模板库STL概述(3)迭代器(Iterators)。迭代器是面向对象版本的指针,如同指针可以指向内存中的一个地址,迭代器可以指向容器中的一个位置。STL的每一个容器类模板中,都定义了一组对应的迭代器类,用以存取容器中的元素。这样,在STL中迭代器就将算法和容器联系起来了,通过迭代器
3、,算法函数可以访问容器中指定位置的元素,而无需关心元素的具体类型。STL迭代器部分主要由头文件和组成。(4)函数对象(FunctionObjects)。一种行为类似于函数的class,实现技术上是一个改写了“calloperator()”的class。STL提供15个预定义的Functionobjects。头文件中定义了一些类模板,用以声明函数对象。(5)适配器(Adaptors)。简单地说就是一种接口类,专门用来修改现有类的接口,提供一种新的接口;或调用现有的函数来实现所需要
4、的功能。主要包括3种适配器ContainerAdaptors、IteratorAdaptors与FunctionAdaptors。其中迭代器适配器的定义在头文件中,函数适配器的定义在头文件中。(6)内存配置器(Allocators)。为STL提供空间配置的系统。头文件中的主要部分是模板类allocator,它负责产生所有容器中的默认分配器。容器使用allocator完成对内存的操作,allocator提供内存原语以对内存进行统一的存取。STL六大组件的交互关系容器通过内存配置器取
5、得数据存储空间,算法通过迭代器存取容器的内容,函数对象用在和算法的结合中,协助算法完成不同的策略变化,从而扩展算法的效用。适配器可以对容器和迭代器的接口进行转换、修饰或套接函数对象。例12-1一个简单的STL应用示例#include#include#include#includeusingnamespacestd;intmain(){intia[]={34,18,23,89,40,15,56,14,41,24};vector6、t>>vec(ia,ia+10);//将vec声明为元素为int类型的向量容器vector::iteratorit;//将it声明为int类型的向量容器的迭代器。intnum;sort(vec.begin(),vec.end());for(it=vec.begin();it!=vec.end();it++)cout<<*it<<"";//14151823243440415689cout<7、_equal(),40));cout<<"小于等于40的数有"<8、多种数据类型上进行操作,在泛型化程序设计思想里,大部分基本算法被抽象,被泛化,独立于与之对应的数据结构,用于以相同或相近的方式处理各种不同情形。算法是泛型的,不与任何特定的数据结构或对象类型系
6、t>>vec(ia,ia+10);//将vec声明为元素为int类型的向量容器vector::iteratorit;//将it声明为int类型的向量容器的迭代器。intnum;sort(vec.begin(),vec.end());for(it=vec.begin();it!=vec.end();it++)cout<<*it<<"";//14151823243440415689cout<7、_equal(),40));cout<<"小于等于40的数有"<8、多种数据类型上进行操作,在泛型化程序设计思想里,大部分基本算法被抽象,被泛化,独立于与之对应的数据结构,用于以相同或相近的方式处理各种不同情形。算法是泛型的,不与任何特定的数据结构或对象类型系
7、_equal(),40));cout<<"小于等于40的数有"<8、多种数据类型上进行操作,在泛型化程序设计思想里,大部分基本算法被抽象,被泛化,独立于与之对应的数据结构,用于以相同或相近的方式处理各种不同情形。算法是泛型的,不与任何特定的数据结构或对象类型系
8、多种数据类型上进行操作,在泛型化程序设计思想里,大部分基本算法被抽象,被泛化,独立于与之对应的数据结构,用于以相同或相近的方式处理各种不同情形。算法是泛型的,不与任何特定的数据结构或对象类型系
此文档下载收益归作者所有