歡迎來到天天文庫
瀏覽記錄
ID:49377144
大?。?87.00 KB
頁數:128頁
時間:2020-02-05
《標準模板庫STL.ppt》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
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提供空間配置的系統(tǒng)。頭文件中的主要部分是模板類allocator,它負責產生所有容器中的默認分配器。容器使用allocator完成對內存的操作,allocator提供內存原語以對內存進行統(tǒng)一的存取。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提供空間配置的系統(tǒng)。頭文件中的主要部分是模板類allocator,它負責產生所有容器中的默認分配器。容器使用allocator完成對內存的操作,allocator提供內存原語以對內存進行統(tǒng)一的存取。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、多種數據類型上進行操作,在泛型化程序設計思想里,大部分基本算法被抽象,被泛化,獨立于與之對應的數據結構,用于以相同或相近的方式處理各種不同情形。算法是泛型的,不與任何特定的數據結構或對象類型系
此文檔下載收益歸作者所有