版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
C++標準範本庫
2泛型程式設計將程式寫得盡可能通用
將演算法從特定的數(shù)據(jù)結構中抽象出來,成為通用的C++的範本為泛型程式設計奠定了關鍵的基礎
STL是泛型程式設計的一個範例
容器(container)迭代器(iterator)演算法(algorithms)函數(shù)對象(functionobject)3命名空間(namespace)一個命名空間將不同的識別字集合在一個命名作用域(namedscope)內(nèi)為了解決命名衝突例如,聲明一個命名空間NS:namspaceNS{classFile;voidFun();}
則引用識別字的方式如下,NS::Fileobj;NS::Fun();沒有聲明命名空間的識別字都處於無名的命名空間中概念和術語4命名空間(續(xù))可以用using來指定命名空間例如,經(jīng)過以下聲明:
usingNS::File;
在當前作用域中就可以直接引用Fileusingnamespacestd;
命名空間std中所有識別字都可直接引用在新的C++標準程式庫中,所有識別字都聲明在命名空間std中,頭檔都不使用擴展名概念和術語5容器容器類是容納、包含一組元素或元素集合的對象。異類容器類與同類容器類順序容器與關聯(lián)容器七種基本容器:向量(vector)、雙端佇列(deque)、列表(list)、集合(set)、多重集合(multiset)、映射(map)和多重映射(multimap)概念和術語6容器的介面通用容器運算符==,!=,>,>=,<,<=,=方法(函數(shù))迭代方法begin(),end(),rbegin(),rend()訪問方法size(),max_size(),swap(),empty()7適配器適配器是一種介面類為已有的類提供新的介面。目的是簡化、約束、使之安全、隱藏或者改變被修改類提供的服務集合。三種類型的適配器:容器適配器用來擴展7種基本容器,它們和順序容器相結合構成棧、佇列和優(yōu)先佇列容器迭代器適配器函數(shù)對象適配器。概念和術語8迭代器迭代器是面向?qū)ο蟀姹镜闹羔?,它們提供了訪問容器、序列中每個元素的方法。概念和術語9演算法C++標準範本庫中包括70多個演算法其中包括查找演算法,排序演算法,消除演算法,記數(shù)演算法,比較演算法,變換演算法,置換演算法和容器管理等等。這些演算法的一個最重要的特性就是它們的統(tǒng)一性,並且可以廣泛用於不同的對象和內(nèi)置的數(shù)據(jù)類型。概念和術語10順序容器順序容器的介面插入方法push_front(),push_back(),insert(),運算符“=”刪除方法pop(),erase(),clear()迭代訪問方法使用迭代器其他順序容器訪問方法(不修改訪問方法)front(),back(),下標[]運算符容器11順序容器——向量向量屬於順序容器,用於容納不定長線性序列(即線性群體),提供對序列的快速隨機訪問(也稱直接訪問)向量是動態(tài)結構,它的大小不固定,可以在程式運行時增加或減少。例10-1求範圍2~N中的質(zhì)數(shù),N在程式運行時由鍵盤輸入。容器12//10_1.cpp#include<iostream>#include<iomanip>#include<vector> //包含向量容器頭檔usingnamespacestd;intmain(){vector<int>A(10);
intn;
int
primecount=0,i,j;
cout<<"Enteravalue>=2asupperlimit:";
cin>>n;
A[primecount++]=2; 1213
for(i=3;i<n;i++){if(primecount==A.size())
A.resize(primecount+10);if(i%2==0)continue;j=3;while(j<=i/2&&i%j!=0)j+=2;if(j>i/2)A[primecount++]=i;}for(i=0;i<primecount;i++)//輸出質(zhì)數(shù)
{cout<<setw(5)<<A[i];if((i+1)%10==0)//每輸出10個數(shù)換行一次
cout<<endl;}
cout<<endl;}1314順序容器——雙端佇列雙端佇列是一種放鬆了訪問許可權的佇列。元素可以從佇列的兩端入隊和出隊,也支持通過下標操作符“[]”進行直接訪問。例10-2使用雙端佇列容器保存double數(shù)值序列容器15順序容器——列表列表主要用於存放雙向鏈表,可以從任意一端開始遍曆。列表還提供了拼接(splicing)操作,將一個序列中的元素從插入到另一個序列中。例10-3改寫例9-7從鍵盤輸入10個整數(shù),用這些整數(shù)值作為結點數(shù)據(jù),生成一個鏈表,按順序輸出鏈表中結點的數(shù)值。然後從鍵盤輸入一個待查找整數(shù),在鏈表中查找該整數(shù),若找到則刪除該整數(shù)所在的結點(如果出現(xiàn)多次,全部刪除),然後輸出刪除結點以後的鏈表。在程式結束之前清空鏈表。容器16//10_3.cpp#include<iostream>#include<list>usingnamespacestd;intmain(){list<int>Link; //構造一個列表用於存放整數(shù)鏈表
inti,key,item;
for(i=0;i<10;i++)//輸入10個整數(shù)依次向表頭插入
{
cin>>item;
Link.push_front(item);}
cout<<"List:";//輸出鏈表1617list<int>::iteratorp=Link.begin();
while(p!=Link.end())//輸出各節(jié)點數(shù)據(jù),直到鏈表尾
{cout<<*p<<"";p++;//使P指向下一個節(jié)點
}
cout<<endl;
cout<<"請輸入一個需要刪除的整數(shù):";
cin>>key;
Link.remove(key);
cout<<"List:";//輸出鏈表
p=Link.begin(); //使P重新指向表頭
while(p!=Link.end()) {cout<<*p<<"";p++;//使P指向下一個節(jié)點
}
cout<<endl;}1718容器適配器容器適配器是用來擴展7種基本容器的棧容器使用適配器與一種基礎容器相結合來實現(xiàn)例10-4:應用標準庫中的deque順序容器生成一個整數(shù)棧stack。佇列容器使用適配器與一種基礎容器相結合來實現(xiàn)的先進先出數(shù)據(jù)結構。例10-5:應用標準庫中的deque順序容器生成一個整數(shù)標準佇列queue。容器19什麼是迭代器迭代器是面向?qū)ο蟀姹镜闹羔樦羔樋梢灾赶蛴洃涹w中的一個地址迭代器可以指向容器中的一個位置STL的每一個容器類模版中,都定義了一組對應的迭代器類。使用迭代器,演算法函數(shù)可以訪問容器中指定位置的元素,而無需關心元素的具體類型。迭代器20迭代器的類型輸入迭代器可以用來從序列中讀取數(shù)據(jù)輸出迭代器允許向序列中寫入數(shù)據(jù)前向迭代器既是輸入迭代器又是輸出迭代器,並且可以對序列進行單向的遍曆雙向迭代器與前向迭代器相似,但是在兩個方向上都可以對數(shù)據(jù)遍曆隨機訪問迭代器也是雙向迭代器,但能夠在序列中的任意兩個位置之間進行跳轉(zhuǎn)。迭代器21迭代器適配器迭代器適配器是用來擴展(或調(diào)整)迭代器功能的類。它本身也被稱為迭代器,只是這種迭代器是通過改變另一個迭代器而得到的逆向迭代器通過重新定義遞增運算和遞減運算,使其行為正好倒置插入型迭代器將賦值操作轉(zhuǎn)換為插入操作。通過這種迭代器,演算法可以執(zhí)行插入行為而不是覆蓋行為例10-6應用逆向迭代器和後插迭代器來操作向量容器中的元素迭代器22迭代器相關的輔助函數(shù)advance()函數(shù)將迭代器的位置增加,增加的幅度由參數(shù)決定distance()函數(shù)返回迭代器之間的距離函數(shù)iter_swap()交換兩個迭代器所指向的元素值例10-7用三個迭代器輔助函數(shù)來操作列表容器中的元素。迭代器23標準C++庫中的演算法演算法本身是一種函數(shù)範本不可變序列演算法(non-mutatingalgorithms)不直接修改所操作的容器內(nèi)容的演算法可變序列演算法(mutatingalgorithms)可以修改它們所操作的容器的元素。排序相關演算法數(shù)值演算法算法24演算法應用舉例例10-9應用不可變序列演算法對數(shù)據(jù)序列進行分析例10-10以可變序列演算法對數(shù)據(jù)序列進行複製,生成,刪除,替換,倒序,旋轉(zhuǎn)等可變性操作。例10-11應用排序相關演算法對序列進行各項操作例10-12應用數(shù)值演算法對數(shù)據(jù)序列進行操作算法25函數(shù)對象一個行為類似函數(shù)的對象,它可以沒有參數(shù),也可以帶有若干參數(shù),其功能是獲取一個值,或者改變操作的狀態(tài)。任何普通的函數(shù)和任何重載了調(diào)用運算符operator()的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年機房建設與運維一體化施工合同書3篇
- 2025版事業(yè)單位聘用合同書(二零二五年度)服務期限與待遇約定3篇
- 2025年度藝術品代購代銷服務協(xié)議范本4篇
- 2025年項目部安全責任合同書編制指南3篇
- 2025年度個人購房裝修配套服務合同
- 2025年高新技術企業(yè)員工薪酬保障與晉升協(xié)議書3篇
- 2025年食材配送與智慧物流解決方案合作協(xié)議3篇
- 2025年度二手房買賣合同綠色裝修與改造服務合同4篇
- 2025年度美容院美容師市場調(diào)研與分析服務合同4篇
- 提前終止房地產(chǎn)買賣合同(2025版)2篇
- 《阻燃材料與技術》-顏龍 習題解答
- 2024-2030年中國食品飲料灌裝設備行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
- 建筑結構課程設計成果
- 纖維增強復合材料 單向增強材料Ⅰ型-Ⅱ 型混合層間斷裂韌性的測定 編制說明
- 習近平法治思想概論教學課件緒論
- 寵物會展策劃設計方案
- 孤殘兒童護理員(四級)試題
- 醫(yī)院急診醫(yī)學小講課課件:急診呼吸衰竭的處理
- 腸梗阻導管在臨床中的使用及護理課件
- 小學英語單詞匯總大全打印
- 衛(wèi)生健康系統(tǒng)安全生產(chǎn)隱患全面排查
評論
0/150
提交評論